0

投稿するページには次のコードがあり、Cookie を正しくエコーします。

/* verify.php */

if ($age >= "21"  && $location == "USA" && $cookie == "Y") {

    $value = "1";
    setcookie("age_verified", $value, time()+60*60*24*30);
    header("Location: ../portal.php?cookieset");
}
elseif ($age >= "21" && $location == "USA") {

    session_start();
    $_SESSION['age_verified'] = "1";
    header("Location: ../portal.php?sessionset");   
}

portal.php では Cookie をエコーできませんが、そのオプションが選択されている場合、セッションは正常に表示されます。

/* portal.php */

session_start();
echo $_SESSION["age_verified"];

結果は「1」

/* portal.php */

echo $_COOKIE["age_verified"];

検索結果はありません

以下のコード ブロックのようなものを実現しようとしていますが、Cookie が結果をエコーし​​ないため、適切に機能していません。

if($_SESSION['age_verified']!="1"){
    header("Location: index.php?no_session");
}
elseif ($_COOKIE['age_verified']!="1"){
    header("Location: index.php?no_cookie");
}
else{
    echo "";    
}

私は何が欠けていますか?

4

1 に答える 1

0

$_SESSION['age_verified']!="1"||$_COOKIE['age_verified']!="1"セッションまたはCookieの値のいずれかをチェックしているように思えます。Cookie の値はユーザーのマシンに保存されるため、永続性が高くなります。また、セッションの値は、ブラウジング セッションでのみ永続化されます。両方を設定することはできません。

実際、あなたのロジックを見ると、verify.php両方ではなく、どちらか一方のアクションを実行しています。お役に立てれば。

于 2012-12-28T19:59:17.427 に答える