1

どうすればCookieをPHPに保持できますか?


give_cookie.php

<?php
    if (!isset($_COOKIE["muffin"]))
        setcookie("muffin", "55", 100 * 60 * 60 * 24 * 30);
    $_COOKIE["lid"]=true;
?>

jar.php

<?php
    var_dump($_COOKIE);
    if($_COOKIE["lid"])
        echo "open";
?>

この順序でコードを実行すると、次の出力が得られます。

array(0){}注意:未定義のインデックス:3行目のjar.phpのlid

からコードを埋め込むと、次の出力jar.phpgive_cookie.php得られます。

array(1){["lid"] => bool(true)} open

4

4 に答える 4

2

関数呼び出しの3番目の引数として、Cookieの有効期限が切れる(エポック以降に計算される)UNIXタイムスタンプを指定する必要があります。

Cookieの有効期限が切れる時間。これはUnixタイムスタンプであるため、エポックからの秒数です。つまり、time()関数に、有効期限が切れるまでの秒数を加えて設定する可能性があります。または、mktime()を使用することもできます。time()+ 60 * 60 * 24 * 30は、Cookieが30日で期限切れになるように設定します。0に設定するか省略した場合、Cookieはセッションの終了時(ブラウザが閉じたとき)に期限切れになります。

のドキュメントを読むことをお勧めしますsetcookie

于 2012-09-25T14:49:11.617 に答える
1

のCookieを設定し、muffin取得しようとしています。同様にCookieを設定するlid必要があります。lid

于 2012-09-25T14:50:00.070 に答える
1

あなたが設定している時間はまだ過去だと思います

現在

time() = 1348584550

100 * 60 * 60 * 24 * 30 =  259200000

だから試してみてください

setcookie("muffin", "55", time() + (100 * 60 * 60 * 24 * 30));

if($_COOKIE["muffin"])
    echo "open";
于 2012-09-25T14:51:00.047 に答える
0

他の答えは正しいですが、別の考慮事項があります。Cookieは、サーバーがhtmlをクライアントに送信するときに設定され、ユーザーがページを要求するとユーザーから受信されます。つまり、正しく設定したCookieを読み込もうとすると、次にユーザーがページをリロードするまでCookieは空になります。これを回避する唯一の方法は、あなたが行ったように、意図的かどうかわからないので、Cookieの値を手動で割り当て、同時に設定することです。これはスーパーグローバルであるためです。この実行ではCookieの値が失われるため、これは適切な方法ではありません。これは機能するはずですが、あまり機能しません。

give_cookie.php

<?php
    if (!isset($_COOKIE["muffin"]))
        setcookie("muffin", "55", 100 * 60 * 60 * 24 * 30);
    setcookie("lid", TRUE, time() + 100 * 60 * 60 * 24 * 30);
    $_COOKIE["lid"]=TRUE;

?>

jar.php

<?php
    if($_COOKIE["lid"])
        echo "open";
?>

PS、あなたのコードにはもっと多くの問題があります(それが何も役に立たないことを除いて)。私たちがもう少しあなたを助けることができるように、あなたが達成しようとしていることを教えてください。

于 2012-09-25T14:58:25.047 に答える