在 PHP 中设置 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
页面时,我正在调用数组的 a var_dump
,$_COOKIE
这就是我得到的:
array(0) { }
因此,尽管正确的代码块正在运行,但似乎没有设置 cookie。