PHP の Cookie に関する知識ポイント

不言
リリース: 2023-03-25 13:00:01
オリジナル
1612 人が閲覧しました

この記事では主に 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 ]]]]]] )
ログイン後にコピー

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

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

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 の Cookie に関する知識ポイントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート