【问题标题】:Cookie set with old value使用旧值设置的 Cookie
【发布时间】:2016-08-10 13:30:31
【问题描述】:

我正在使用代码:

IF (isset($_GET['s']))
{
    $sessie = $_GET['s'];
}
ELSE
{
    $sessie = 'I';
}
$cookie = 'JaiDje_Page';
setcookie($cookie, $sessie);
$WDpag = $_COOKIE[$cookie];
echo $WDpag."-".$_COOKIE[$cookie]."-".$sessie."<br>";

在$sessie(菜单选择)的新值之后,奇怪的是页面第一次加载时,$WDpag 和$_COOKIE[$cookie] 给出了旧值,而$sessie 给出了新值。 页面刷新后,所有三个值都相同。

所以在菜单中做出选择后,下面是回声(示例)

I-I-Z

页面刷新后 (F5)

Z-Z-Z

似乎 cookie 比我菜单中的选择落后一步。

我做错了什么?

【问题讨论】:

    标签: php variables cookies


    【解决方案1】:

    原因是$_COOKIE[$cookie]返回浏览器当前发送的cookie。而setcookie 向浏览器发送一个cookie。当您检索值$_COOKIE[$cookie] 时,cookie 尚未设置,因为它将在请求页面后设置。

    试着把这个放在setcookie之后:

    if($_COOKIE[$cookie] != $sessie) header("location: pageName.php");
    

    【讨论】:

    • 谢谢,这与其他答案一起解决了不止一个问题!伟大的! :-)
    【解决方案2】:

    $_COOKIE是在页面加载时设置的,所以如果你想立即访问,你可以直接设置$_COOKIE['variable']

    就这样吧

    //setcookie($cookie, $sessie);
    $_COOKIE[$cookie] = $sessie;
    

    【讨论】:

    • 谢谢,这与其他答案一起解决了不止一个问题!伟大的! :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多