提交页面后显示$ _COOKIE []的旧值,直到下次刷新

时间:2013-01-10 17:41:13

标签: php html

我遇到的问题是,首次点击“提交”后,页面会重新加载,页面会显示每个Cookie集的旧值,直到刷新或重新加载页面为止。

这基本上就是我如何设置它。

的index.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);
?>

的functions.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";
    }
}

1 个答案:

答案 0 :(得分:4)

setcookie超全局变量中,PHP脚本无法看到您使用$_COOKIES设置的cookie,直到下一个请求,因为setcookie仅在http响应中设置了Set-Cookie标头。 / p>

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

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

编辑:here是类似的问题。