最近遇到一个问题,关于cookie,做个小记录。
现象:基于cyask二次开发的问答系统,在非正常退出系统,直接关闭浏览器后,再次打开系统时,默认上次登录用户仍为登录状态。这是cyask默认的状态。
但是二次开发后,要求用户每次登录自动增加1个积分,这样一来,用户只能增加一次积分,以后都是自动登录。
检查了一下login.php源文件,原来使用的是cookie,嘿嘿,很简单,就是cookie过期时间设置问题。
对于想要关闭浏览器,自动清除cookie,那么cookie过期时间就不要设置。这正是我想要的。
修改前代码:$cookietime = $_POST['cookietime'] ? 86400 * 30 : 0;
set_cookie('compound', authcode("$cyask_uidt$cyask_usert$cyask_pw", 'ENCODE', $cyask_key), $cookietime);
修改后代码://$cookietime = $_POST['cookietime'] ? 86400 * 30 : 0;
set_cookie('compound', authcode("$cyask_uidt$cyask_usert$cyask_pw", 'ENCODE', $cyask_key));
注意那个逗号也要去掉。
另外:对于IE,效果很明显。但chrome,关闭标签不行,必须关闭浏览器才可以清除cookie。