【问题标题】:No cookie value on other pages其他页面上没有 cookie 值
【发布时间】:2012-12-14 00:47:26
【问题描述】:

我发布到的页面具有以下代码,并且正确地回显了 cookie:

/* verify.php */

if ($age >= "21"  && $location == "USA" && $cookie == "Y") {

    $value = "1";
    setcookie("age_verified", $value, time()+60*60*24*30);
    header("Location: ../portal.php?cookieset");
}
elseif ($age >= "21" && $location == "USA") {

    session_start();
    $_SESSION['age_verified'] = "1";
    header("Location: ../portal.php?sessionset");   
}

在 portal.php 上,我无法回显 cookie,但如果选择该选项,会话会显示正常。

/* portal.php */

session_start();
echo $_SESSION["age_verified"];

结果为“1”

/* portal.php */

echo $_COOKIE["age_verified"];

没有结果

我正在尝试实现类似下面的代码块,但它无法正常工作,因为 cookie 没有回显结果 /* 门户网站.php */ session_start();

if($_SESSION['age_verified']!="1"){
    header("Location: index.php?no_session");
}
elseif ($_COOKIE['age_verified']!="1"){
    header("Location: index.php?no_cookie");
}
else{
    echo "";    
}

我错过了什么?

【问题讨论】:

  • 这不是您遇到的问题,但不要在 Location: 标头中使用相对路径。虽然大多数浏览器都可以使用它们,但它们是不允许的。

标签: php cookies session-cookies setcookie


【解决方案1】:

在我看来,$_SESSION['age_verified']!="1"||$_COOKIE['age_verified']!="1" 正在检查会话或 cookie 值。 Cookie 值更持久,因为它们存储在用户的机器上,而会话值仅持续到浏览会话。它们可能不会同时设置。

事实上,在verify.php 上查看您的逻辑,您正在执行一个操作或另一个操作,而不是两者。希望这会有所帮助。

【讨论】:

  • 好的,我明白你在说什么,但是如果在 verify.php 上设置了 cookie 值,为什么我不能在 portal.php 上回显它?
  • 您是否检查过verify页面上是否确实设置了cookie(在重定向之前输出cookie)?你试过print_r($_COOKIE);吗?浏览器肯定接受 cookie?
  • 在 verify.php 上是的,我在重定向到测试之前回显 cookie,并且值正常,但在重定向之后,cookie 值似乎丢失了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-16
相关资源
最近更新 更多