phpのcookie操作(設定・使い方・削除)を詳しく解説

WBOY
リリース: 2016-07-25 08:59:32
オリジナル
1045 人が閲覧しました
この記事では、PHP での Cookie の設定、使用、削除、および Cookie の制限に関する関連コンテンツを紹介します。必要な方は参考にしてください。

1. クッキーを設定する PHPでCookieを設定するには、SetCookie関数を使用します。 注: Cookie は HTTP プロトコル ヘッダーの一部であり、ブラウザとサーバーの間で情報を転送するために使用されるため、HTML ファイル自体に属するコンテンツが出力される前に Cookie 関数を呼び出す必要があります。

SetCookie 関数は Cookie を定義し、それを HTTP ヘッダーの末尾に追加します。 SetCookie 関数のプロトタイプは次のとおりです。

int SetCookie(文字列名、文字列値、int 期限切れ、文字列パス、文字列ドメイン、int セキュア);

名前を除くすべてのパラメータはオプションです。 3 つのパラメータ値、パス、およびドメインは空の文字列に置き換えることができ、それらが設定されていないことを示します。expire パラメータと secure パラメータは数値であり、0 で表すことができます。期限切れパラメータは標準の Unix タイムスタンプで、time() または mktime() 関数を使用して秒単位で取得できます。 secure パラメータは、この Cookie が暗号化された HTTPS プロトコルを介してネットワーク上で送信されるかどうかを示します。

現在設定されているCookieはすぐには有効になりませんが、次のページまで表示されません。これは、設定されたページでCookieがサーバーから顧客のブラウザに渡され、ブラウザが顧客からCookieを転送できるためです。次のページへ ファイルがマシンから取得されてサーバーに返される理由。 同じページ上の Cookie の設定は、実際には後ろから前に始まるため、新しい Cookie を挿入する前に削除する場合は、最初に挿入ステートメントを記述し、次に削除ステートメントを記述する必要があります。そうしないと、望ましくない結果が発生する可能性があります。

SetCookie() 関数が Cookie を設定する例をいくつか見てみましょう。

--シンプル: SetCookie("MyCookie", "MyCookie の値");

-- 有効期限付き: SetCookie("WithExpire", "1 時間で期限切れ", time()+3600);//3600 秒 = 1 時間

-- 総合型: SetCookie("FullCookie", "完全な Cookie 値", time()+3600, "/forum", ".jbxue.com", 1);

サイトに複数の異なるディレクトリがあり、パスのない Cookie のみを使用する場合、あるディレクトリのページに設定された Cookie は、別のディレクトリのページには表示されません。 Cookie はパス指向です。 パスが指定されていない場合でも、WEB サーバーは現在のパスをブラウザに自動的に渡します。パスを指定すると、サーバーは設定されたパスを使用するようになります。 解決: SetCookie を呼び出すときにパスとドメイン名を追加します。ドメイン名の形式は「bbs.it-home.org」または「.jbxue.com」です。

SetCookie関数の値を表す部分は渡される際に自動的にエンコードされます。 valueの値が「test value」の場合、URLのメソッドと同様に渡すと「test%20value」になります。 これはプログラムに対して透過的であり、PHP は Cookie 値を受信すると自動的にその値をデコードします。

同じ名前の複数の Cookie を設定するには、配列を使用します。

SetCookie("CookieArray[]", "値 1"); SetCookie("CookieArray[]", "値 2"); または SetCookie("CookieArray[0]", "値 1"); SetCookie("CookieArray[1]", "値 2");

2. Cookieの受信と処理

PHP は Cookie の受信と処理を非常に優れたサポートを備えており、完全に自動であり、FORM 変数と同じ原理を持っています。 たとえば、MyCookier という名前の Cookie を設定すると、PHP は WEB サーバーが受信した HTTP ヘッダーからそれを自動的に分析し、$myCookie という名前の通常の変数と同様の変数を形成します。この変数の値が Cookie の値になります。 配列にも同じことが当てはまります。

もう 1 つの方法は、PHP のグローバル変数 $HTTP_COOKIE_VARS 配列を参照することです。

例は次のとおりです: (これらが前のページで設定されており、まだ有効であると仮定します)

$MyCookie をエコーし​​ます。 エコー $CookieArray[0]; エコー数($CookieArray); echo $HTTP_COOKIE_VARS["MyCookie"];

とても簡単です。

3. Cookieを削除する 既存の Cookie を削除するには、次の 2 つの方法があります。 1 つ目は、name パラメータのみを指定して SetCookie を呼び出すことです。そうすれば、この名前の Cookie が関連するコンピュータから削除されます。 もう 1 つの方法は、Cookie の有効期限を time() または time()-1 に設定することです。そうすれば、ページが閲覧された後に Cookie が削除されます (実際には期限切れになります)。 注: Cookie が削除されても、その値は現在のページで引き続き有効です。

4. Cookieの使用制限 まず、HTML ファイルのコンテンツを出力する前に設定する必要があります。

第二に、異なるブラウザでは Cookie の処理に一貫性がなく、場合によっては誤った結果が発生する可能性があります。たとえば、MS IE+SERVICE PACK 1 はドメイン名とパスを含む Cookie を正しく処理できません。Netscape Communicator 4.05 および MS IE 3.0 はパスと時間がない Cookie を正しく処理できません。 MS IE 5 に関しては、ドメイン名、パス、時刻を含む Cookie を扱うことができないようです。これは、このサイトのページをデザインしているときに発見したものです。

3 番目の制限はクライアント側にあります。 ブラウザで作成できる Cookie の最大数は 30 で、各 Cookie は 4KB を超えることはできません。各 Web サイトで設定できる Cookie の総数は 20 を超えることはできません。

以上がこのセクションで紹介するPHP Cookieの操作についてです。PHPにおけるCookieの設定、使用、削除、注意すべき点について詳しく紹介しました。 お役に立てれば幸いです。



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