0

最初に[送信]をクリックしてページを再読み込みした後、ページが更新または再読み込みされるまで、設定された各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);
?>

関数.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は、http 応答でヘッダーのみを設定するため、次の要求までスーパーグローバル変数のsetcookiePHP スクリプトによって表示されません。$_COOKIESsetcookieSet-Cookie

同じリクエストでこれらの Cookie を読み取りたい場合は、次を使用できます。

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

編集:ここに同様の問題があります。

于 2013-01-10T17:48:41.977 に答える