session产生的cookie文件在本机的哪里?

我做了一下测试,我在页面写上代码

setcookie('name','joe',time()+3600)

然后在win7系统本机路径里能找到一个名为cookie:administrator@localhost的文档文件,打开里面就存有namejoe的值,测试通过。

然后我把代码改成

session_start();
$_SESSION['age']=17;

访问页面,在相同路径下并没有发现session产生的cookie文件,但是在代码里添加上

echo COOKIE['PHPSESSID'];

输出76sds8f6s8s6,说明通过session确实生成了cookie文件,那么cookie文件在哪里?

阅读 5.6k
3 个回答

概念上你有点混乱
首先,你每次请求无论你用不用$_SESSION,都会生成一个key为phpsessid的cookie,假设为76sds8f6s8s6
其次,你服务器端用$_SESSION存储key为age的值时,并不会对应的生成一个cookie到本地,而是在服务器端生成了SESS_76sds8f6s8s6类似的文件(取决于你的PHP.INI配置选项)
最终,你在另外一个页面想获取这个age的值,PHP是通过你本机的phpsessid值76sds8f6s8s6,在服务器端找到对应的SESSION文件中age的值

你应该可以在name所在同一个文件里找到一个名字是phpsessid的cookie


换句话说, 你在哪里找到的name=joe, 你就可以在哪里找到PHPSESSID=76sds8f6s8s6

AGE存在于服务端,而客户端/浏览器是不知道有这个参数存在的

HTTP请求发送的时候,浏览器会自动带上PHPSESSID这个cookie,然后服务器会去找对应的session,session可能是一个文件,也可能存在于缓存或者数据库中,这取决于服务器端的配置,而默认情况下是临时目录下一个名为SESS_76sds8f6s8s6的文件,这个文件中会保存AGE=17这样一个参数

所以,不要企图在保存cookie的文件夹下找到session中的数据。

/windows/temp/

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题