网站是SESSION保持回话的,我手动删除了客户机上的所有cookie,再次访问的时候为什么还是登录状态呢?
高洛峰
高洛峰 2016-10-28 10:12:51
0
1
623

本人刚接触PHP不到3个月,noob一枚.....试写的网站是用SESSION保持回话的,在没有关闭浏览器的情况下, 我手动删除客户端上所有的cookie文件,然后刷新网站,发现还是帐号处于登录状态...这是怎么回事呢?

而据我平时常用的一些网站,只要清空cookie后,都会退出登录状态...

下面是小弟的问题代码,请大牛们不吝赐教..

处理登录代码的页面A

//登录成功,保持登录状态 function login_true($username){ session_start(); $_SESSION['userinfo']=array('uid'=>476283675,'username'=>$username); }

显示登录界面的页面B

/*如果$_SESSION['userinfo']或$_SESSION['userinfo']['uid']为空 *则说明未登录,引导用户登录 */ session_start(); if (empty($_SESSION['userinfo'])or empty($_SESSION['userinfo']['uid'])){ echo "点我登录"; die('请先登录'); } echo '晚上好';

清空了cookie文件后,还是保持登录状态,请问问题出在哪儿呢?

原因找到了,sessionID没有设置生存周期的话,那么浏览器默认关闭的时候自动清除保存sessionID的cookie,但是问题是,这个时候Cookie是保存在客户端的内存中,由浏览器维护,浏览器关闭后就消失了,所以在浏览器的cookie目录里是找不到这个保存着sessionID的cookie文件的....再加上IE11和EdGE浏览器的清除缓存机制是只清除硬盘内cookie,而不会清除内存中的cookie,所以就会出现这个情况...用chrome则没有问题


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

reply all (1)
三叔

session是通过每次请求的时候传递一个session_id的值来保存会话的,而传递的方式有两种,一种是通过每次请求时携带的cookies,还是有一种是通过url来传递,如果你php设置的是通过cookies,那么只要删除相应域名下的原来的cookies,服务器就会自动生成新的session_id,也就是丢失了原来的session,至于你的问题,我觉得是删除的方法不对,既然是开发者,那就用浏览器的开放者工具,上面可以显示当前域名下的全部cookies,也可以删除cookies,另外,浏览器推荐chrome!

1.png

    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!