很多网站都是利用session来讲用户的信息保存到服务器上的某个文件夹中(通常是C:\window\temp)。一个会话对应一个session文件,如同一个用户使用chrom和FF打开同一个页面的时候,会在服务器上生成两个不同文件名的session文件,但是文件里面的内容是一样的。
当用户打开浏览器,访问某个网站时操作session,服务器就会在服务器端的磁盘上为该浏览器分配一个保存session信息的文件,该文件被这个浏览器独自访问。
比如:服务器上有两个文件,a.php和b.php
a.php的code:
<?php session_start();//能够创建一个空的session文件 $_SESSION['name']='marcofly';//网session文件中写入数据name|s:8:"marcofly"; ?>
b.php的code:
<?php session_start(); session_destroy();?>
当用户使用谷歌浏览器访问a.php的时候,会在服务器生成一个session文件:sess_***(*号中的信息根据不同的时间不同的浏览器而不同)
比如,我使用chrom浏览器访问该文件后,将会生成一个sess_cqjg8ci4il97bt90pup67hc135文件
使用FF浏览器访问该文件后,将会生成一个sess_f1hd048893vl399tha6r4t4mt7文件
打开后,发现文件内容其实都是一样的:name|s:8:"marcofly";
当使用chrom访问b.php文件后,会发现sess_cqjg8ci4il97bt90pup67hc135文件会被删除,原因是:执行session_destroy();的时候,其实就相当于将当前会话所对应的session文件从磁盘上删除。
但是,我们如果只是简单的把浏览器关闭,发现当前会话所对应的session文件并没有删除,重新访问a.php后,又会在该目录下生产一个session文件,内容也是name|s:8:"marcofly";
看到这里,我们可以总结出如下信息:
- session_destroy函数的作用其实就是删除当前会话所对应的session文件
- 关闭一个浏览器进程,并不会将保存在服务器上的用户session信息文件删除
- 同一时刻,使用不同的浏览器访问同一个页面的时候,会生成两个不同文件名的session文件,这也就是我们使用chrom浏览器登录淘宝后,然后再使用FF也需要登录的原因,因为他们所创建的session文件时不同的,即使内容是相同的
- 为了安全考虑,“安全退出”可以帮助我们删除保存在服务器上的session信息文件,这就大大降低了被骇客窃取信息的可能性