我遇到的问题是,首次点击“提交”后,页面会重新加载,页面会显示每个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";
}
}
答案 0 :(得分:4)
在setcookie
超全局变量中,PHP脚本无法看到您使用$_COOKIES
设置的cookie,直到下一个请求,因为setcookie
仅在http响应中设置了Set-Cookie
标头。 / p>
如果您想在同一请求中阅读这些cookie,您可以使用:
setcookie($xNum, $val, time()+3600);
$_COOKIE[$xNum] = $val;
编辑:here是类似的问题。