PHP セッションと PHP Cookie の例
クッキーとは何ですか?
Cookie は、Web サーバーがクライアント コンピュータに保存する最大サイズ 4KB の小さなファイルです。
Cookie が設定されると、後続のすべてのページ リクエストは Cookie の名前と値を返します。
Cookie は、その発行元のドメインからのみ読み取ることができます。 たとえば、ドメインを使用して設定された Cookie www.guru99.com ドメインから読み取れません キャリア.guru99.com.
インターネット上のほとんどの Web サイトには、広告などの他のドメインの要素が表示されます。 これらの要素を提供するドメインは、独自の Cookie を設定することもできます。 これらはサードパーティ Cookie として知られています。
ユーザーが作成した Cookie は、そのユーザーのみに表示されます。 他のユーザーはその値を確認できません。
ほとんどの Web ブラウザには、Cookie、サードパーティ Cookie、またはその両方を無効にするオプションがあります。
この場合、PHP は URL に Cookie トークンを渡して応答します。
以下に示す図は、Cookie がどのように機能するかを示しています。
ここでは、
1) ユーザーが Cookie を保存するページをリクエストします。
2) サーバーはユーザーのコンピュータに Cookie を設定します。
3) ユーザーからの他のページ要求は、Cookie の名前と値を返します。
Cookie を使用する理由と使用時期?
- HTTP はステートレス プロトコルです。 Cookie を使用すると、ユーザーのコンピュータに保存されている小さなファイルを使用してアプリケーションの状態を追跡できます。Cookie が保存されるパスはブラウザによって異なります。Internet Explorer では通常、Cookie は Temporal Internet Files フォルダに保存されます。
- ユーザー エクスペリエンスのパーソナライズ - これは、ユーザーが設定を選択できるようにすることで実現されます。次に要求されるページは、Cookie で設定された設定に基づいてパーソナライズされます。
- ユーザーが訪問したページの追跡
Cookieの作成
次に、Cookie の作成に使用される基本的な構文を見てみましょう。
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
ここに、
- Php「setcookie」は PHP関数 クッキーの作成に使用されます。
- 「cookie_name」は、サーバーが $_COOKIE 配列変数から値を取得するときに使用する Cookie の名前です。 それは必須です。
- 「cookie_value」は Cookie の値であり、必須です。
- 「[expiry_time]」はオプションです。 Cookie の有効期限を 1 時間などに設定するために使用できます。 時刻は、PHP の time() 関数を使用して、0 より大きい秒数をプラスまたはマイナスして設定します。つまり、3600 時間の場合は time() + 1 です。
- 「[cookie_path]」はオプションです。 これは、サーバー上の Cookie パスを設定するために使用できます。 スラッシュ「/」は、Cookie がドメイン全体で利用可能になることを意味します。 サブディレクトリは、サブドメインへの Cookie アクセスを制限します。
- 「[ドメイン]」はオプションで、Cookie アクセス階層を定義するために使用できます。
www.cookiedomain.com
ドメイン全体を意味しますが、www.sub.cookiedomain.com
Cookie へのアクセスを制限しますwww.sub.cookiedomain.com
およびそのサブドメイン。 合計文字数が 253 文字を超えない限り、サブドメインのサブドメインを持つことができることに注意してください。 - 「[secure]」はオプションで、デフォルトは false です。 これは、Cookie が true に設定されている場合は https 経由で送信されるか、false に設定されている場合は http 経由で送信されるかを決定するために使用されます。
- 「[Httponly]」はオプションです。 true に設定すると、クライアント側のスクリプト言語のみが使用されます。 Javaスクリプト アクセスできません。
注意: PHP の set cookie 関数は、HTML 開始タグの前に実行する必要があります。
次に、Cookie を使用する例を見てみましょう。
XNUMX 秒後に期限切れになる Cookie にユーザー名を保存できる基本プログラムを作成します。
以下のコードは、上記の例「cookies.php」の実装を示しています。
<?php setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds echo 'the cookie has been set for 60 seconds'; ?>
出力:
the cookie has been set for 60 seconds
Cookie値の取得
次のコードを含む「cookies_read.php」という名前の別のファイルを作成します。
<?php print_r($_COOKIE); //output the contents of the cookie array variable ?>
出力:
Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )
注: $_COOKIE は、PHP に組み込まれたスーパー グローバル変数です。
これには、設定されているすべての Cookie の名前と値が含まれます。
値の数
$_COOKIE 配列に含めることができるのは、php.ini で設定されたメモリ サイズによって異なります。
デフォルト値は 1GB です。
アプリケーションをテストしています。
PHP ファイルを phptus フォルダーに保存したと仮定します。
- ステップ 1 – Web ブラウザを開いて URL を入力します http://localhost/phptuts/cookies_read.php
注: 空の配列のみが表示されています
- ステップ 2 – ブラウザで URL にアクセスします http://localhost/phptuts/cookies.php
- ステップ 3 – 最初のタブに戻り、更新ボタンをクリックします。
しばらく待ってから、もう一度更新ボタンをクリックします。 どのような結果が得られましたか?
Cookieの削除
- 有効期限が切れる前に Cookie を破棄したい場合は、有効期限をすでに経過した時刻に設定します。
- 次のコードでcookie_destroy.phpという名前の新しいファイルを作成します。
<?php setcookie("user_name", "Guru99", time() - 360,'/'); ?>
- Cookie 値の取得に関する上記のセクションの手順 1 から 3 を繰り返します。
- URLを開く http://localhost/phptuts/cookie_destroy.php
- URLに切り替えます http://localhost/phptuts/cookies_read.php どのような結果が表示されるのでしょうか?
セッションとは?
- セッションはサーバーに保存されるグローバル変数です。
- 各セッションには、保存された値を取得するために使用される一意の ID が割り当てられます。
- セッションが作成されるたびに、一意のセッションIDを含むCookieがユーザーのコンピュータに保存され、サーバーへのリクエストごとに返されます。クライアントブラウザがCookieをサポートしていない場合は、一意のPHPセッションIDがURLに表示されます。
- セッションには、Cookie に比べて比較的大きなデータを保存できる容量があります。
- セッション値は、ブラウザを閉じると自動的に削除されます。 値を永続的に保存したい場合は、データベースに保存する必要があります。
- $_COOKIE 配列変数と同様に、セッション変数は $_SESSION 配列変数に格納されます。 Cookie と同様に、セッションは HTML タグより前に開始する必要があります。
セッションを使用する理由と使用時期
- ユーザー ID などの重要な情報を、悪意のあるユーザーが改ざんできないサーバー上でより安全に保管したいと考えています。
- あるページから別のページに値を渡したいとします。
- Cookie をサポートしていないブラウザで Cookie に代わる手段が必要です。
- URL で渡す場合と比較して、効率的かつ安全な方法でグローバル変数を保存したい
- 4KB を超える容量の情報を一時的に保存する必要があるショッピング カートなどのアプリケーションを開発しているとします。
セッションの作成
セッションを作成するには、まず PHP session_start 関数を呼び出してから、値を $_SESSION 配列変数に保存する必要があります。
ページがロードされた回数を知りたいとします。これにはセッションを使用できます。
以下のコードは、セッションから値を作成および取得する方法を示しています。
<?php session_start(); //start the PHP_session function if(isset($_SESSION['page_count'])) { $_SESSION['page_count'] += 1; } else { $_SESSION['page_count'] = 1; } echo 'You are visitor number ' . $_SESSION['page_count']; ?>
出力:
You are visitor number 1
セッション変数の破棄
session_destroy() 関数は、Php セッション変数全体を破棄するために使用されます。
セッションの単一項目のみを破棄したい場合は、unset() 関数を使用します。
以下のコードは、両方のメソッドの使用方法を示しています。
<?php session_destroy(); //destroy entire session ?>
<?php unset($_SESSION['product']); //destroy product session item ?>
Session_destroy は、セッションに関連付けられた Cookie を含むすべてのセッション データを削除します。
設定を解除すると、個々のセッション変数のみが解放されます。
他のデータはそのまま残ります。
製品概要
- Cookie はユーザーのコンピュータに保存される小さなファイルです
- Cookie は発行元ドメインからのみ読み取ることができます
- Cookie には有効期限を設定できます。有効期限が設定されていない場合、ブラウザを閉じると Cookie の有効期限が切れます。
- セッションはサーバーに保存されるグローバル変数のようなものです
- 各セッションには、ユーザーの変数を追跡するために使用される一意の識別 ID が与えられます。
- HTML タグがブラウザに送信される前に、Cookie とセッションの両方を開始する必要があります。