0

我发布到的页面具有以下代码,并且正确地回显了 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 没有回显结果 /* portal.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 "";    
}

我错过了什么?

4

1 回答 1

0

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

实际上,查看您的逻辑verify.php是在执行一项操作或另一项操作,而不是两者兼而有之。希望这可以帮助。

于 2012-12-28T19:59:17.427 回答