SESSION和COOKIE的实例解析

来源:互联网 发布:复星金服java招聘 编辑:程序博客网 时间:2024/05/20 03:40

我们php中写有

<?phpsession_start();print_r($_SESSION);echo $_COOKIE[session_name()];?>

session_name()就是php.ini中定义的PHPSESID,就是唯一标识的id,然后这个字段会作为键值存放到COOKIE的数组里面.但是COOKIE是第二次才生效的,不是第一次就生效的.所以第一次就会出现不存在COOKIE中的这个值,当我们第二次刷新页面的时候就有了.

这里写图片描述

而第二次刷新的时候就会出现我们想看到的COOKIE的SESSIONID

这里写图片描述

当然你会问COOKIE存放在哪里,我们可以通过FIREBUG来查看

这里写图片描述

在个时候,我们服务器端wamp/tmp里面就存在了这个session

这里写图片描述

那么cookie会在关闭浏览器之后就丢失.
假如我们自己延长COOKIE的过期时间比如

<?phpsession_start();print_r($_SESSION);//先取消下面注释执行,然后刷新页面,然后加注释,再刷新页面//setcookie('a',$_COOKIE[session_name()],time()+60);echo $_COOKIE['a'];

这里是关闭了浏览器再打开.获取到了对应的COOKIE,注意firebug里面那个路径是指这个路径下可以获取COOKIE的意思,不是COOKIE存放位置,COOKIE存放位置在C盘中

这里写图片描述

过了一分钟之后就会出现获取不到COOKIE.过期

这里写图片描述

那么这样我们把相关的加密好的一个含有用户信息的东西存放到COOKIE里面,然后设置比如十天的过期时间.那么这样就可以实现关闭浏览器也保存用户状态的功能了.

那么关于SESSION的过期,当我们start以后创建的session会存放在tmp目录下,而一般php.ini会定义了

这里写图片描述

这里的1440s就代表24min如果session没有被访问,就是如果没有刷新页面的时候,就会被视为过期.而过期之后gc不一定会回收,是按照几率来回收的

0 0
原创粉丝点击