PHP を使用した Cookie の設定と読み取りは、極端に言うと、非常に困難です。 - 簡単なこと。 Cookie について説教するつもりはありませんが、Cookie は重要で便利です。これらは、特定の問題を解決するときに使用できる唯一のツールです。
Cookieを作成および変更するには、PHP関数setcookie()を使用します。 Cookie をどの程度制御したいか、および Cookie の値を誰が読み取ることができるかに応じて、setcookie() には最大 6 つのパラメーターを指定できます。
Cookieを設定する最も簡単な方法は次のとおりです:
<?php setcookie('name', 'bret'); ?>
その後、ユーザーが終了する前に、このブラウザを使用して表示されるサイト内のすべてのページには、値 "bret" を持つ変数$nameが含まれます。 PHP 経由で簡単にアクセスできます。有効期間は 1 つのユーザー接続であるため、このタイプの Cookie は セッション Cookie と呼ばれます。
ユーザーがブラウザを閉じた後もこの Cookie を残しておきたい場合は、この Cookie の有効期限を設定する 3 番目のパラメーターを setcookie() 関数に渡す必要があります。 PHP の背景は完全に Unix の考え方に由来しているため、この有効期限は 1970 年 1 月 1 日からの合計秒数で表す必要があります。あなたが Unix プログラマであれば、このアルゴリズムは理解できるかもしれません。しかし、Windows や Macintosh 陣営の出身なら、首を振ってため息をつき、奇妙な Unix の連中を理解できないかもしれません。
でも、恐れる必要はありません。 PHP には、非常に便利な関数 mktime() が用意されています。表現したい時、分、秒、月、日、年を順番に mktime() に渡すだけで、mktime() は 1970 年 1 月 1 日からの合計秒数を返します。したがって、2000 年問題をシミュレートする必要がある場合:
<?php $y2k = mktime(0,0,0,1,1,2000); setcookie('name', 'bret', $y2k); ?>
さて、あなたの Cookie は 2000 年に期限切れになります。
新しい値を保存するために Cookie を更新する必要がある場合は、元の値を上書きするだけで済みます。したがって、前のページで Cookie を送信したばかりでも、名前を「jeff」に変更できます。
<?php $y2k = mktime(0,0,0,1,1,2000); setcookie('name', 'jeff', $y2k); ?>
これを実行しても変数 $name の値は変更されないことに注意してください。その値はページのロード時に決定されます。常に両方を同時に決定したい場合は、次のコードを書くことができます:
<?php $name = 'jeff'; $y2k = mktime(0,0,0,1,1,2000); setcookie('name', $name, $y2k); ?>
setcookie() の次の 2 つのパラメーターは、Cookie を読み取るプログラムのドメインとディレクトリ パスを制御できます。デフォルト設定では、Cookie を送信したサーバーと同じディレクトリ構造内にあり、同じレベル以下のページのみがその値を読み取ることができます。これは、ネットワークセキュリティを考慮したためです。ただし、「www.domain.com」だけでなく「other.domain.com」のアカウントをお持ちで、そのアカウントで ~/myhome ディレクトリからのページの処理が許可されている場合は、setcookie() を次のように変更する必要があります:
<?php setcookie('name', 'jeff', $y2k, '~/myhome', '.domain.com'); ?>
setcookie() で使用される最後のパラメータは、SSL などの安全な接続を実装する Web サーバーにのみ Cookie が送信されるように設定することです。この機能を使用するには、6 番目の値を 1 に設定します。
Cookie の削除は非常に簡単です。Cookie 名を setcookie() に渡すだけで、PHP がそれを削除します。
<?php setcookie('name'); ?>
最後に、Cookieの使用に関して注意すべき重要な点が1つあります。 Cookie が HTTP で動作する仕組みのため、テキストを出力する前にすべての Cookie を送信する必要があります。そうしないと、PHP が警告を出し、Cookie は送信されません。正しい方法は次のとおりです:
<?php setcookie('name', 'jeff'); echo "Hello Everyone!"; ?>
間違った方法は次のとおりです:
<?php $today = mktime(12,0,0,6,25,1999); echo 'Here it is '.date('g:i:s a, F d, Y',$today); echo ''; echo 'In GMT it is '.gmdate('g:i:s a, F d, Y',$today); ?>
以上がPHP で Cookie を使用する手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。