我目前正在开发一个PHP网站。我正在尝试设置一个存储用户ID的cookie。这是一个登录系统,我需要用户ID才能将它添加到MySQL数据库的不同表中。
当用户成功登录时,会创建一个PHP会话和一个cookie,然后使用元标记刷新来指向索引页面。
if ($row = mysql_fetch_array($result))
{
setcookie('id', $row['use_id']);
$_SESSION['user'] = $username;
setcookie('userID', $row['use_id']);
echo '<meta http-equiv="refresh" content="0;url=../index.php">';
}
如果我删除元刷新并使用$_COOKIE['userID']
回显cookie它可以正常工作但是当我在完成元刷新后尝试在index.php页面上使用$_COOKIE['userID']
时它不是'显示任何内容。
答案 0 :(得分:5)
setcookie('userID', $row['use_id'], 0, "/");
编辑:过期时为零。
您的cookie对于index.php不可见,因为它已从子目录中的脚本设置。因此,对于较高级别的页面,它是不可见的。您应该将cookie路径(第4个参数)设置为“/”,并且cookie将在整个域中可用。
这就是为什么你的cookie对index.php不可见的原因。
header('Location: ../index.php');
^^^
您已将页面重定向到较高目录级别,但未为整个域设置Cookie。
答案 1 :(得分:2)
如果索引页面目录高于您设置cookie的目录,则cookie将不会在索引页面中可用。我建议你使用位置标题进行重定向。希望这会对你有所帮助。