gpt4 book ai didi

php - cookies 未被删除

转载 作者:行者123 更新时间:2023-12-02 05:26:06 25 4
gpt4 key购买 nike

我有一个基本的登录系统。基本的登录/注销功能如下:

function login() {
global $page;

if ($_COOKIE['adminUser'] == adminUser && $_COOKIE['adminPass'] == adminPass):
$_SESSION['adminLogin'] = true;
redirect($_SERVER['REQUEST_URI']);
elseif ($_POST['adminUser'] == adminUser && $_POST['adminPass'] == adminPass):
setcookie('adminUser', $_POST['adminUser'], time() + 60 * 60 * 24 * 7);
setcookie('adminPass', $_POST['adminPass'], time() + 60 * 60 * 24 * 7);
$_SESSION['adminLogin'] = true;
redirect($_SERVER['REQUEST_URI']);
else:
$page->content->table = new template('admin/login.tpl');
// it shows the login form
endif;
}

function logout() {
$_SESSION['adminLogin'] = false;
setcookie('adminUser', false, time() - 60*100000);
setcookie('adminPass', false, time() - 60*100000);
redirect(pathApp);
}

redirect($x)header("Location: $x");死;

在整个脚本的任何地方都没有设置其他 COOKIES。

问题是注销功能不工作。我尝试通过 Firebug 进行调试,以查看正在发送哪些 header ,并且对我来说一切正常。这是 Firebug 的注销日志:

Response Headers

HTTP/1.1 200 OK
Date: Fri, 15 Apr 2011 18:48:57 GMT
Server: Apache
X-Powered-By: PHP/5.2.13
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: adminUser=deleted; expires=Thu, 15-Apr-2010 18:48:56 GMT
adminPass=deleted; expires=Thu, 15-Apr-2010 18:48:56 GMT
Content-Length: 1041
Connection: close
Content-Type: text/html


Request Headers

GET /freeads/admin/logout HTTP/1.1
Host: clienti.bsorin.ro
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://clienti.bsorin.ro/freeads/admin
Cookie: adminUser=q; adminPass=q; PHPSESSID=22faf6e20467b88d97dc7838572cbd47

脚本在 http://clienti.bsorin.ro/freeads/admin 上线.用户名和密码都设置为“q”。

谢谢!

最佳答案

似乎系统一开始就有缺陷,因为我没有正确设置 cookie。我没有使用 path 参数。 cookie 被设置在 /path/login 并在 path/logout 被删除。

正确的方法是将 setcookie() 命令对(登录和注销)更改为:

setcookie('adminUser', $_POST['adminUser'], time() + 60 * 60 * 24 * 7, '/');
setcookie('adminPass', $_POST['adminPass'], time() + 60 * 60 * 24 * 7, '/');

setcookie('adminUser', false, time() - 60*100000, '/');
setcookie('adminPass', false, time() - 60*100000, '/');

注意第四个参数,path,被设置为/。花了我一段时间,但我想通了:)。

关于php - cookies 未被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5681117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com