ホームページ >バックエンド開発 >PHPチュートリアル >PHP での Cookie の使用例の詳細な説明

PHP での Cookie の使用例の詳細な説明

php中世界最好的语言
php中世界最好的语言オリジナル
2018-05-16 11:11:142052ブラウズ

今回は、PHP での Cookie の使用ケースについて詳しく説明します。PHP で Cookie を使用する場合の 注意事項 は何ですか?実際のケースを見てみましょう。

Cookie とは

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は、セッションを維持するために、マーキングに追加のデータが必要です。 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 ]]]]]] )

パラメーターは Cookie の内容に対応します。Expires のデフォルトは 0 で、ユーザーがブラウザーのパスを閉じた後に Cookie がクリアされることを意味します。デフォルトは現在のページのパス、つまり最後の URL です。バックスラッシュ前の部分はデフォルトで現在のページのドメイン名になります。使用範囲を拡張したい場合は、親ドメイン名に設定することもできます。トップレベルのドメイン名。httponly のデフォルトは false ですが、XSS 攻撃を避けるために true に設定することをお勧めします。

Cookie を削除するには、Cookie の有効期限を過去の

タイムスタンプ (time() – 3600 など) に設定するだけです。したがって、Cookie foo を削除するには、コードを次のようにします。

setcookie('foo', '', time() - 3600);

Good Cookie Practices

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 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

制御可能な同時非同期操作を実現するためのphpのcurlバッチ処理ケースの詳細

PHP+MySQLのメッセージキュー実装の詳細な手順

以上がPHP での Cookie の使用例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。