この記事では主に PHP の Cookie に関する知識を紹介します。必要な方は参考にしてください。
Cookie とは何ですか?保存されたユーザー エージェント側のデータの一部 (ブラウザーが最も一般的なユーザー エージェント)。 Web を閲覧するとき、ブラウザは現在のページの有効な Cookie をリクエストのヘッダーに入れてサーバーに送信します。
Cookieの構成
Cookieは次の部分で構成されます:
domain、Cookieが属するドメイン名。ブラウザは Cookie を送信するときに、Cookie が属するドメイン名を確認し、一致する場合にのみ送信します。ブラウザは tlanyan.me ドメインの Cookie を www.tlanyan.me または dev.tlanyan.me のページ リクエストに送信しますが、www.baidu.com には送信しません。同様に、ドメイン名が dev サブドメインに制限されているため、dev.tlanyan.me の Cookie を tlanyan.me に送信することはできません。path、Cookie が属するパス。 /author に設定された Cookie は /category パスには送信されませんが、/ に設定された Cookie はすべてのページリクエストに送信されます。
name、クッキーの名前(キー名)。
value、Cookieの値(コンテンツ)。
有効期限、有効期限。
安全、この Cookie が https の場合にのみ送信されるかどうか。
httponly、http 送信のみに使用されるかどうか。 true に設定すると、ブラウザ側のスクリプト言語は Cookie にアクセスできなくなります。
Cookieの使用
Cookieは主に次の分野で使用されます:
httpは、セッションを維持するためにマーキングに追加のデータが必要であり、Cookieが最も一般的に使用される方法です。 2 つの一般的な Cookie である PHPSESSID と JSESSIONID は、それぞれ PHP と Java Web アプリケーションでセッションを維持するために使用されます。一部のデータはクライアント側に保存する必要があります。Cookie はオプションです。ユーザーが「今後プロンプトを表示しない」にチェックを入れた後、ロゴをクライアントに保存し、プログラムに再度アクセスして設定を読み取って、ロゴを表示するかどうかを決定できます。 HTML 5 の人気に伴い、関数のこの部分は徐々に localStorage に置き換えられています。
PHP側のCookie操作
Cookieの読み取りでは、$_COOKIEスーパーグローバル変数を通じてユーザーから渡されたすべてのCookieを読み取ることができます。 $_COOKIE は、送信された Cookie の名前と値を読み取るために走査できる配列です。ブラウザは Cookie のキー値をサーバーに送信するだけなので、Cookie のドメイン/パス/EXIPRES やその他の情報を読み取ることはできません。
PHP は、クライアントに Cookie を送信するための setcookie 関数を提供します。 setcookie の関数シグネチャは次のとおりです:bool setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )
setcookie('foo', '', time() - 3600);
Cookie の良い実践方法
Cookie の文字通りの意味から、データの断片を保存することがわかります。 Cookie は Web 開発で頻繁に使用されるため、もっと理解する必要があります。 Cookie を使用する際の推奨事項は次のとおりです。
過度に大規模で過剰なデータは Cookie に保存しないでください。Cookie はクライアント上および送信中に明確に表示され、機密情報は Cookie に保存すべきではありません。ユーザーの安全のため、Cookie の httponly 属性を可能な限り true に設定します。
Cookie はクライアントによって完全に制御され、サーバーはそれらを盲目的に信頼することはできず、フィルターする必要があります。その他
Cookie はリクエストとともに送信され、レスポンスとともにクライアントに設定されます。このプロセスを理解すると、次のコードのような初心者によくある問題を理解できるようになります:
if (!isset($_COOKIE['foo']) { setcookie('foo', 'foobar'); } $foo = $_COOKIE['foo'];
Cookie foo が設定されていない場合、5 行目でエラーが発生します。その理由は、ブラウザーが後続のリクエストに Cookie を添付する前に、setcookie がこの応答の Cookie 情報を設定する必要があり、それがこのリクエストには反映されないためです。
同様に、Cookie はリクエストとレスポンスのヘッダー情報に存在し、ヘッダーはリクエスト本文の前にある必要があるため、setcookie の関数コンテキストの使用制限はヘッダー関数と同じです。つまり、応答本文を使用することはできません。前に送った。
関連する推奨事項:
PHP での Cookie の使用php は Web ページがユーザー名とパスワードを記憶する機能を実現するために Cookie を使用します
以上がPHP の Cookie に関する知識ポイントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。