一、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)
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)