SESSION学习

一、session的保存
PHP的session是以文件的形式保存的。
在php.ini中有个配置项 session.save_path = "/tmp/session" ;
这个里面填写的路径,将会使session文件保存在该路径下。
session文件的命名格式是:"sess_[PHPSESSID的值]"。每一个文件,里面保存了一个会话的数据。
其实只要使用代码
session_start();
$_SESSION['username'] = $value;
就会促发php的session机制,结果往对应的session文件中写入一个值。

二、session文件的调用
session.save_path路径下这么多的session文件,php是如何确定要调用哪个session文件的呢?
php是依据,一个名为PHPSESSID的cookie,根据它的值,确定要调用哪个session文件的。
去浏览器中,可以看到一个cookie名为PHPSESSID,假如它的值为"um2v8kcsh0sg7m9kqg1o976637",
那么,当访问服务器的时候,就会调用session目录下名为"sess_um2v8kcsh0sg7m9kqg1o976637"的文件。
其实,PHPSESSID就是一个会话id,以此来确定,哪个是你的会话数据。
※cookie的名字PHPSESSID是可以改的,在php.ini中 session.name = PHPSESSID就是设置该cookie的名字

三、session文件的创建
理解到session文件的命名规则是:“sess_[PHPSESSID值]“。那么,就很容易明白了。
因为,客户端存在cookie:PHPSESSID。客户端发送请求后,会将该cookie发送给服务器(php可以使用$_COOKIE['PHPSESSID']看到其内容),
这样的话,还是会根据PHPSESSID生成一个session文件的。

四、session文件的格式
session文件是被序列化了的文件。
其格式为:变量名|类型:长度:值; 
并用分号隔开每个变量。有些是可以省略的,比如长度和类型。 
代码
session_start();
$_SESSION["username"] = "admin" ;
$_SESSION["password"] = "test1234";
生成的session文件内容如下:
username|s:5:"admin";password|s:8:"test1234";

五、session_start函数所做的实际操作
session_start,可以看成是创建一个session文件。假如有原来的session文件,或许没有创建。引入一个。往session文件中写值,那是代码“$_SESSION['']=” 赋值所完成的操作。
session_start()生成一个新的session文件名时。会判断是否存在cookie名为PHPSESSID的值。如果存在,那么就会按照它的值,组合成一个文件名"sess_[phpcookie值]"。
所以,在目录下,老是能够看到之前删除过的session文件名。如果将浏览器中对应的cookie删掉。那么就不会生成同样的名字了。
如果不存在名为PHPSESSID的cookie。php所做的估计为:先发送一个cookie,然后按照cookie的值生成一个(我可以在浏览器中马上看到一个名为PHPSESSID的cookie)











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值