PHP退出登录及cookie无法删除问题的解决办法
对于cookie的记忆,只有在学习的时候和面试的时候才有点印象,不经常操作cookie,所以了解也不多。昨天看到一个朋友的项目退出功能不完善,就提醒了一下,思路很简单,删除cookie就ok了,但她也不太会做退出功能,所以就帮忙捣鼓了一下,结果当天晚上没有捣鼓出来,以失败而告终。
另一个朋友建议用js做,想了一下,好像就是这样,用js直接在本页面删除cookie,不用经过php了,岂不是更简单,但js删除cookie我是一点都没用过,甚至是第一次知道可以用js删除cookie...
不会做可以学,可以不断尝试,这样才能会。其实就是折腾...
写了一个简单的页面,设置了一个cookie,然后上网查了一下代码,在本地测试后,可以使用,本以为大功告成,结果用在朋友项目中发现无效,仔细看了下,原来不只是本页面有cookie,其他文件保留的也有这个cookie,只删除这个页面的cookie没有用,其他文件依然会把这个cookie给传递过来,cookie又重新有了(其实是因为没有销毁cookie)...虽然没有成功,但还是要粘贴一下js代码,毕竟还是能删除cookie的。
//读取cookies function getCookie(name) { var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); if(arr=document.cookie.match(reg)) return unescape(arr[2]); else return null; } //删除cookies function delCookie(name) { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval=getCookie(name); if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString(); } delCookie('name'); //name是cookie的名字,找到cookie名字,然后替换cookie
js删除cookie失败让我很苦恼,然后就翻了一下朋友的代码,虽然有大量的ajax,但基本还是能看懂的,顺着代码查到退出登录的php代码,想着在这个地方删除cookie,然后打印一下,cookie删除了,但依然没有退出,和js情况一样。
这时候想起来翻一下老师的代码,看看老师当初是怎么写的,很幸运,一大堆文档,一下就找到这个了,看了下老师写的代码,退出功能的方法中不仅有清除session还有销毁session,貌似问题就出在这个地方没有销毁session,试了一下,大功告成!!!
public function logout() { //删除session unset($_SESSION['PHPSESSID']); //销毁session session_destroy(); //如需跳转,写个跳转方法 }
已有 5 条评论