クッキー-setcookiephpが非常に遅い、または何が起こったのですか?
これは小さなテストです。クッキーを設定してからアクセスしようとしています:
<?php
setcookie("t",0,time()+900);
echo ($_COOKIE['t']+10);
setcookie("t",0,time()-3600);
?>
コードを実行すると、次のようなエラーメッセージが表示されます。
Notice: Undefined index: t in /var/www/x/testcookie.php on line 5
10
Cookieにアクセスできないのはなぜですか?
答え :
解決策:
そのようには機能しません。 setcookie
は、「次のhttp接続で、クライアント(ブラウザ)にこのCookieを設定するように指示します。まだ有効期限が切れていない場合は、ブラウザが次のhttp接続でCookieを送り返します。は$_COOKIE
配列に含まれているため、次のページのリロード後にPHPで設定されていることを確認できます。
setcookie
関数(任意のヘッダー関数)の前に禁止されているものをブラウザに出力したため、コードのほかに2番目のCookieは設定されません。
setcookie()は、残りのHTTPヘッダーと一緒に送信されるCookieを定義します。他のヘッダーと同様に、スクリプトからの出力の前にCookieを送信する必要があります(これはプロトコルの制限です)。これには、タグや空白を含む出力の前に、この関数を呼び出す必要があります。
Cookieが設定されると、次のページでアクセスできるようになります $_COOKIEでロード
答え :
解決策:
Cookieがどのように機能するかを理解する必要があります。 setcookieを使用して、ブラウザにヘッダーを送信しました。これにより、ブラウザにCookieを保存するように指示されます。また、$ _ COOKIEスーパーグローバルには、ユーザーリクエストヘッダーからのCookieが含まれています。つまり、setcookieで設定した変数は、更新後、ユーザー要求ヘッダーが返されるときに$_COOKIE配列でのみ使用可能になります。また、ヘッダーを設定できるのは出力の前のみであるため、2番目のsetcookieは機能しないことに注意してください。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。