Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基于Cookie的身份验证注销不起作用_Php_Codeigniter_Session_Cookies - Fatal编程技术网

Php 基于Cookie的身份验证注销不起作用

Php 基于Cookie的身份验证注销不起作用,php,codeigniter,session,cookies,Php,Codeigniter,Session,Cookies,我正在构建一个基于cookie的会话机制,该机制具有一个抽象类会话,可以扩展该类会话以生成多个cookie会话实例,以适应不同的用途和复杂性 我还有一个Auth类,它处理权限以及用户的实际登录和注销。Auth类需要的会话类或子类才能运行 到目前为止一切都很好,我可以让用户登录,如果经过一定时间,ip地址不匹配,我也可以让用户注销 每次页面加载都会读取cookie,检查是否存在不一致,并根据xyz销毁或更新cookie。销毁脚本将cookie上的时间设置为现在负,并从auth库中删除已添加的任何用

我正在构建一个基于cookie的会话机制,该机制具有一个抽象类会话,可以扩展该类会话以生成多个cookie会话实例,以适应不同的用途和复杂性

我还有一个Auth类,它处理权限以及用户的实际登录和注销。Auth类需要的会话类或子类才能运行

到目前为止一切都很好,我可以让用户登录,如果经过一定时间,ip地址不匹配,我也可以让用户注销

每次页面加载都会读取cookie,检查是否存在不一致,并根据xyz销毁或更新cookie。销毁脚本将cookie上的时间设置为现在负,并从auth库中删除已添加的任何用户数据。这是因为我已经登录了几分钟,然后点击刷新,cookie就会被破坏,我会返回到登录屏幕

但是,如果我想通过单击按钮将其注销,则销毁脚本不起作用,即我可以在顶部回显原始用户数据,运行注销脚本,该脚本回显注销并运行所有功能,无任何错误等,但如果我获得用户cookie,则仍然相同。我不明白这是如何工作的自动检查,但不是当用户点击注销按钮

下面是我的sessionDestroy函数

protected function sessionDestroy($cookieName) {

    setcookie(
                $cookieName,
                addslashes(serialize(array())),
                (time() - 3600),
                0
        );          
}

我知道destroy这个词对cookie不好,但你知道我的意思……希望你能使用CI内置的cookie&session库


会话库的好处在于它使用了加密的cookies。你发现这是一个比你所做的要好得多的解决方案。

-1建议另一个“完整的解决方案”。他希望有自定义会话管理。他仍然可以使用ci库,这将减少他必须照看的“垃圾”。KISS是你的朋友。他在问为什么他的解决方案不起作用。建议放弃它去做其他事情不是一个可行的答案。我试图教育他,如果一个框架提供了一个帮助,使工作更容易,他应该使用它,它很可能会解决他的问题。