似乎没有设置PHP cookie超全局

时间:2011-04-02 21:15:45

标签: php cookies

我目前正在开发一个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']时它不是'显示任何内容。

2 个答案:

答案 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将不会在索引页面中可用。我建议你使用位置标题进行重定向。希望这会对你有所帮助。