PHP セッションと PHP Cookie の例
⚡ スマートサマリー
PHPのCookieとセッションはどちらもステートレスなHTTPプロトコル上で状態を保持しますが、データの保存方法は異なります。このチュートリアルでは、Cookieがクライアント側に小さなファイルを保存する仕組み、セッションがサーバー側にデータを保持する仕組み、そしてそれぞれの作成、読み取り、破棄方法を実際のコード例を用いて解説します。
クッキーとは何ですか?
クッキーとは、ウェブサーバーがクライアントコンピュータに保存する、最大サイズが4KBの小さなファイルです。
Cookie が設定されると、後続のすべてのページ リクエストは Cookie の名前と値を返します。
Cookieは、発行元のドメインからのみ読み取ることができます。たとえば、www.guru99.comドメインを使用して設定されたCookieは、別のドメインからは読み取ることができません。 キャリア.guru99.com.
インターネット上のほとんどの Web サイトには、広告などの他のドメインの要素が表示されます。 これらの要素を提供するドメインは、独自の Cookie を設定することもできます。 これらはサードパーティ Cookie として知られています。
ユーザーが作成した Cookie は、そのユーザーのみに表示されます。 他のユーザーはその値を確認できません。
ほとんどのウェブブラウザには、Cookie、サードパーティCookie、またはその両方を無効にするオプションがあります。
この場合、PHP はクッキー トークンを渡して応答します。 URL.
以下に示す図は、Cookie がどのように機能するかを示しています。
ここでは、
1) ユーザーがクッキーを保存するページをリクエストする
2) サーバーはユーザーのコンピュータに Cookie を設定します。
3) ユーザーからの他のページ要求は、Cookie の名前と値を返します。
Cookie を使用する理由と使用時期?
- HTTPはステートレスプロトコルです。クッキーを使用すると、 tracCookieは、ユーザーのコンピューターに保存された小さなファイルを使用してアプリケーションの状態を記録します。Cookieの保存場所はブラウザによって異なります。Internet Explorerでは通常、一時インターネットファイルフォルダに保存されます。
- ユーザーエクスペリエンスのパーソナライズは、ユーザーが好みの設定を選択できるようにすることで実現されます。その後のページリクエストは、Cookieに設定された好みに基づいてパーソナライズされます。
- Tracking ユーザーが訪問したページ
Cookieの作成
それでは、クッキーを作成する際に使用する基本的な構文を見ていきましょう。
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
ここに、
- 「setcookie」は PHP関数 クッキーの作成に使用されます。
- 「cookie_name」は、サーバーが$_COOKIE配列変数から値を取得する際に使用するクッキーの名前です。必須項目です。
- 「cookie_value」はクッキーの値であり、必須項目です。
- 「[expiry_time]」はオプションです。クッキーの有効期限(例:1時間)を設定するために使用できます。有効期限は、PHPのtime()関数に0より大きい秒数を加算または減算して設定します。例えば、1時間の場合はtime() + 3600となります。
- 「[cookie_path]」はオプションです。 これは、サーバー上の Cookie パスを設定するために使用できます。 スラッシュ「/」は、Cookie がドメイン全体で利用可能になることを意味します。 サブディレクトリは、サブドメインへの Cookie アクセスを制限します。
- 「[domain]」はオプションです。これは、Cookie アクセス階層を定義するために使用できます。
www.cookiedomain.comドメイン全体を意味する一方www.sub.cookiedomain.comCookie へのアクセスを制限しますwww.sub.cookiedomain.comおよびそのサブドメイン。 - 「[secure]」はオプションです。デフォルトはfalseです。この設定は、CookieがHTTPS経由で送信されるか(trueの場合)、HTTP経由で送信されるか(falseの場合)を決定するために使用されます。
- 「[httponly]」はオプションです。true に設定すると、クライアント側のスクリプト言語(例: Javaスクリプト Cookieにアクセスできません。
注意: PHPのsetcookie関数は、HTMLの開始タグの前に実行する必要があります。
それでは、クッキーを使った例を見てみましょう。
ユーザー名を60秒後に有効期限が切れるクッキーに保存できる基本的なプログラムを作成します。
以下のコードは、上記の例「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の数とサイズはブラウザによって制限されており、通常はドメインあたり約50個、Cookie1個あたり約4KBです。
アプリケーションのテストを行います。PHPファイルをphptutsフォルダに保存済みであると仮定します。
- ステップ 1 – ウェブ ブラウザを開き、 URL http://localhost/phptuts/cookies_read.php
注: 空の配列のみが表示されています
- ステップ2 – 閲覧先 URL http://localhost/phptuts/cookies.php
- ステップ3 – 最初のタブに戻り、更新ボタンをクリックします。
1分ほど待ってから、もう一度更新ボタンをクリックしてください。どのような結果が出ましたか?
Cookieの削除
- 有効期限が切れる前に Cookie を破棄したい場合は、有効期限をすでに経過した時刻に設定します。
- cookie_destroy.php という名前の新しいファイルを作成し、以下のコードを記述してください。
<?php setcookie("user_name", "Guru99", time() - 360,'/'); ?>
- 上記セクションのクッキー値の取得手順1~3を繰り返してください。
- Video Cloud Studioで 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.
- あなたは開発中ですping ショップなどのアプリケーションping 4KBを超える容量の情報を一時的に保存する必要のあるカート。
セッションの作成
セッションを作成するには、まずPHPのsession_start関数を呼び出し、次に値を$_SESSION配列変数に格納する必要があります。
ページが読み込まれた回数を知りたいとしましょう。そのためにはセッションを利用できます。
以下のコードは、セッションから値を作成および取得する方法を示しています。
<?php session_start(); // start the session 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 セッション全体を破棄するために使用されます。
セッション項目を1つだけ削除したい場合は、unset() 関数を使用します。
以下のコードは、両方のメソッドの使用方法を示しています。
<?php
session_destroy(); // destroy entire session
?>
<?php unset($_SESSION['product']); // destroy product session item ?>
session_destroyは、セッションに関連付けられたCookieを含む、すべてのセッションデータを削除します。
unsetコマンドは個々のセッション変数のみを解放します。その他のデータはそのまま保持されます。





