0

我遇到了一个问题,在第一次单击提交后,页面重新加载,页面显示每个 cookie 集的旧值,直到页面刷新或重新加载。

这基本上是我设置它的方式。

索引.php

<?php 
    if(isset($_POST['filter'])){
        foreach($_POST['filter'] as $key=>$value){
            $xNums[] = $key;    
        }
        $vals = $_POST['filter'];
        updateFilter($vals, $xNums);
    }
?>
<form action='index.php' method='post'>
<input type='radio' name=filter['".$xNum."'] value='yes' />Show<input type='radio' name=filter['".$SomeVariable."'] value='no' />Hide
<input type=submit value=" Submit " />
<?php
    echo displayStatus($xNum);
?>

函数.php

function updateFilter($vals, $xNums){
    foreach($xNums as $xNum){
        $val = $vals[$xNum];
        setcookie($xNum, $val, time()+3600);
    }
    return;
}

function displayStatus($xNum){
    if($_COOKIE["'".$xNum."'"]=='no'){
        return "no";
    } else {
        return "yes";
    }
}
4

1 回答 1

4

在下一次请求之前,您使用的 cookie对超全局变量setcookie中的 PHP 脚本不可见,因为仅在 http 响应中设置标头。$_COOKIESsetcookieSet-Cookie

如果您想在同一个请求中读取这些 cookie,您可以使用:

setcookie($xNum, $val, time()+3600);
$_COOKIE[$xNum] = $val;

编辑:是类似的问题。

于 2013-01-10T17:48:41.977 回答