在PHP中设置cookie真的很奇怪。我基本上已经实现了一个登录函数(真的,真的运行的工厂),想法是,如果数据库返回一行,在用用户名和密码查询后,那就没事了。我使用查询数据库奇怪的Cookie行为
代码(似乎很好地工作):
$statement = $db->prepare("SELECT COUNT(*) FROM staff_accs WHERE username=:username AND password=:password");
$statement->bindParam(':username', $username);
$statement->bindParam(':password', $password);
$statement->execute();
我使用的是测试如果返回的行的代码。再次,似乎工作正常。
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
页面,我打电话var_dump
的$_COOKIE
一个数组,这就是我得到:
所以它出现在cookie不会被设置,尽管事实上正确的代码块正在运行..
如果删除重定向,确实该cookie获取设置? –
我刚测试过。事实上,确实如此。为什么会重新导致cookie不被存储? – christopher
刷新admin.php并再次检查 – 2013-07-16 20:15:32