Cookie とユーザー セッションを使用する
Cookie
Cookie は、ユーザーに関する小規模な情報を保存します。サーバーやスクリプトからのリクエストに相当します。ユーザーのブラウザを通じて、ホストは 20 個の Cookie の保存を要求できます。各 Cookie には、ホストとパスの情報に加えて、名前、値、有効期限が含まれています。 1 つの Cookie のサイズ制限は 4kb です。 Cookie を設定すると、リクエストを行ったホストのみがデータを読み取ることができるため、ユーザーのプライバシーが確実に尊重されます。さらに、ユーザーはすべての Cookie リクエストを受け入れるか拒否するかを通知するようにブラウザを設定できます。
Cookie を設定する PHP スクリプトによって送信されるヘッダー内の Set-Cookie 項目は次のようになります:
Set-Cookie:vegetable=artichoke;path=/;domain=yourdomain.com
Set-Cookie ヘッダーには次のものが含まれます:
名前と値のペア (vegetable=artichoke)、
パス (path=/)、およびドメイン (domain=yourdomain.com)。
有効期限フィールドが設定されている場合、ブラウザが Cookie を「忘れた」日付の値が提供されます。有効期限が設定されていない場合、Cookie はユーザー セッションの有効期限が切れたとき、つまりユーザーがブラウザを閉じたときに期限切れになります。
パスはドメインが見つかるディレクトリであり、Cookie はサーバーのこのディレクトリの下のディレクトリに送り返される必要があるため、パス フィールドとドメイン フィールドは連携して機能します。パスが「/」 (非常に一般的な値) の場合、ドキュメント ルート内の任意のファイルから Cookie を読み取ることができることを意味します。
パスが「/products」の場合、この Cookie は Web サイトの /products ディレクトリ内のファイルでのみ読み取ることができます。
その後、PHP スクリプトは Cookie にアクセスできるようになります。Cookie は環境変数 HTTP_COOKIE に含まれるか、または $_COOKIE スーパーグローバル変数の一部として、次の 3 つの方法でアクセスできます。 Cookie を安全に削除する方法 setcookie() 関数を呼び出すには、time()-60 など、確実に期限切れになっている時間を使用します。
ユーザーセッション
セッション関数は、その識別子に関連付けられた情報を保存および取得するために使用できる一意の識別子をユーザーに提供します。訪問者がセッション対応ページにアクセスすると、新しい識別子が割り当てられるか、ユーザーは以前の訪問によってすでに確立されている識別子に再関連付けされます。すでにセッションに関連付けられている変数は、$_SESSION スーパーグローバル変数を通じてコードで使用できるようになります。通常、セッション状態は一時ファイルに保存されますが、session_set_save_handler() と呼ばれる関数を使用してデータベース ストレージを実装することもできます。
セッションを開始し、IDを返し、変数をsession1.phpとして保存します。
echo $_SERVER["HTTP_COOKIE"]; echo getenv("HTTP_COOKIE"); echo $_COOKIE["vegetable"];
保存されたセッション変数にアクセスするには、session_save_path() 関数を使用して一時ファイルがシステム内のどこに保存されているかを確認し、sesson2.php として保存します。
<?php /** *setcookie()函数输出一个Set-Cookie标头。它应该在任何其他内容发送给浏览器之前调用。 *参数:cookie名字、cookie值、过期日期、路径、域、一个整数 *如果cookie仅通过一个安全的连接发送的话,这个整数的值设为1。0表示在一个非安全的环境中发送。 */ setcookie("vegetable","artichoke",time()+3600,"/","localhost",0); if (isset($_COOKIE["vegetable"])){ echo "<p>Hello again,you hava chosen:".$_COOKIE["vegetable"].".</p>"; }else { echo "<p>Hello you.This may be your first visit.</p>"; } ?>
最初にサーバー上の session1.php にアクセスすると、結果は次のようになります:
次にサーバー上の session2.php にアクセスすると、結果は次のようになります:
このパスで sess_curdcq4agn11gq4fdj4bq2kj33 を見つけて開きます。メモ帳を使用すると、登録された変数がどのように保存されるかを確認できます。
$_SESSION スーパーグローバル変数に値が設定されると、PHP は変数名と値をファイルに書き込み、この情報を読み取ることができ、後で変数を復元できます。この変数をスーパーグローバル変数 $_SESSION に追加した後も、スクリプトの実行中にいつでもその値を変更できます。ただし、この変更された値は、変数がスーパーグローバル変数 $_SESSION に再割り当てされるまで、グローバル設定に反映されません。 。