Php 奇怪的饼干行为
在PHP中设置cookie时遇到了一个非常非常奇怪的问题。我基本上实现了一个登录功能(非常非常普通),其思想是,如果数据库在使用用户名和密码查询后返回一行,那么一切都很好 我用于查询数据库的代码(似乎工作正常): 我用来测试是否返回一行的代码。同样,它似乎工作得很好Php 奇怪的饼干行为,php,cookies,Php,Cookies,在PHP中设置cookie时遇到了一个非常非常奇怪的问题。我基本上实现了一个登录功能(非常非常普通),其思想是,如果数据库在使用用户名和密码查询后返回一行,那么一切都很好 我用于查询数据库的代码(似乎工作正常): 我用来测试是否返回一行的代码。同样,它似乎工作得很好 if($statement->fetchColumn() === "1") { $cookieValue = sha1($username.$password); setcoo
if($statement->fetchColumn() === "1")
{
$cookieValue = sha1($username.$password);
setcookie('admin', $cookieValue, 3600, '/');
$_COOKIE['admin'] = $cookieValue;
header("Location: ../admin.php");
}
else
{
// Re-direct to no permissions page.
header("Location: ../noPermission.html");
}
代码将重新定向到正确的页面,但是未设置cookie。我已经将路径设置为“/”,以确保它是全局可用的(没有“/”,它就无法工作)。我还在调用该方法后直接设置该值,以确保立即设置cookie
但是,当我进入admin.html
页面时,我正在调用$\u COOKIE
数组的var\u dump
,这就是我得到的:
array(0) { }
因此,尽管正确的代码块正在运行,但似乎没有设置cookie。问题在于调用
setcookie
。第三个参数需要时间戳,而不是持续时间。在这里,您的cookie甚至在存在之前就过期了。
你应该试试:
如果删除重定向,cookie是否已设置?我刚刚测试过。事实上,它确实被设置好了。为什么re direct会导致cookie无法存储?刷新admin.php并再次检查代码是否快了?试着拖延一下。可能是向上重定向1级(
。/
)导致cookie位于错误的位置?也许admin.php
上有什么东西正在删除cookie?亲爱的耶稣。我已经用PHP编程两年了;我究竟怎么会犯这样愚蠢的错误!?谢谢,我将在6分钟内接受。:)@克丽丝:每个人都会犯错。如果有疑问,检查文档是一个好习惯。;-)
array(0) { }
setcookie('admin', $cookieValue, time() + 3600, '/');