对于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();
    //如需跳转,写个跳转方法
}

退出登录