UPDATE:2024年07月31日
PHP $_SESSION(セッション変数)のすべて!【初心者向け基本】
目次 [閉じる]
$_SESSION(セッション変数) 簡単まとめ
$_SESSION(セッション変数)とは
- $_SESSION は PHPの定義済み変数(=スーパーグローバル変数)の1つ
- $_SESSION は 現在のセッションに登録されている値の変数
- $_SESSION は 連想配列として使用する
- $_SESSION は、関数やメソッドの内部で使用する場合、global $_SESSION; とする必要がない
SESSION(セッション)の仕組み
- セッションは、サイトを訪れた個々のユーザーのデータを個別に管理する機能を提供する
- セッションデータは、セッションデータコンテナに格納される
- セッションデータは、一意な識別子(ユニークなID)セッションIDによって管理される
- サーバー側のセッションIDとブラウザ側のクッキーに格納されたPHPSESSIDが一意な同一のIDであり、ユーザーを関連付け識別する
※PHPSESSIDの名前は変更可能 - セッションを利用するには、session_start()関数とセッション変数の$_SESSION(スーパーグローバル変数の1つ)を使用する
- session_id()関数 セッションIDを確認できる
- session_name()関数 セッション名を確認できる
- session_regenerate_id()関数 セッションIDを再発行できる
- session_unset()関数 セッション変数を開放できる
- session_destroy()関数 全セッションデータを破棄できる
※クッキーのPHPSESSIDは削除されません - セッションはブラウザを閉じた時点で終了する
- php.ini の session.cookie_lifetime で有効期限を設定できる
- クッキー(cookie)が無効になっている場合は、URLのパラメーターとしてセッションIDを伝播する
$_SESSION(セッション変数)を利用してみる
セッションスタート と $_SESSION(セッション変数) の登録と呼び出し
1 2 3 4 5 | <?php session_start();//セッションスタート $_SESSION['mail'] = 'support@wepicks.net';//セッション変数に登録 echo $_SESSION['mail'];//セッション変数の呼び出し ?> |
session_start(); をコールしてセッションをスタートします。次に、$_SESSION['mail'] = 'support@wepicks.net'; で変数を登録して echo $_SESSION['mail']; で登録した変数を呼び出しています。登録した $_SESSION['mail'] の内容は、ページ遷移などしても呼び出し可能です。基本的にはブラウザを閉じるまで登録したセッションの内容は生きています。
session_id() や session_name() でセッションIDやセッション名を確認
session_id() で現在のセッションIDや session_name() で現在のセッション名なども容易に確認可能です。session_unset() で セッション変数の内容を開放することが出来ます。その後、再度 echo $_SESSION['mail'];で呼び出しても内容は表示されません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php session_start();//セッションスタート $_SESSION['mail'] = 'support@wepicks.net';//セッション変数に登録 echo $_SESSION['mail']."<br>\n";//セッション変数の呼び出し echo session_id()."<br>\n";//セッションIDの確認 echo session_name()."<br>\n";//セッション名の確認 echo session_unset()."<br>\n";//セッション変数の開放 echo $_SESSION['mail']."<br>\n";//セッション変数の呼び出し ?> |
kgek2dves7akmv3pq4qa5rjo02i86d9k
PHPSESSID
このようにセッションの仕組みは簡単に利用でき、非常に便利なものです。
セッション変数を個別に削除
session_unset(); や unset($_SESSION); を使用すると、セッション変数の登録内容がすべて消えてしまいます。個別にセッション変数の内容を初期化する場合は、以下のように記述しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php //セッションスタート session_start(); //セッション変数に登録 $_SESSION['mail'] = 'support@wepicks.net'; $_SESSION['url'] = 'https://wepicks.net/'; //セッション変数の呼び出し echo $_SESSION['mail']."<br>\n"; echo $_SESSION['url']."<br>\n"; //セッション変数の削除 unset($_SESSION['mail']); //セッション変数の呼び出し echo $_SESSION['mail']."<br>\n"; echo $_SESSION['url']."<br>\n"; ?> |
https://wepicks.net/
https://wepicks.net/
$_SESSION['mail'] のみ削除されるので、$_SESSION['url'] の内容は呼び出しできます。
$_SESSION(セッション変数)とは
- $_SESSION は PHPの定義済み変数(=スーパーグローバル変数)の1つ
- $_SESSION は 現在のセッションに登録されている値の変数
- $_SESSION は 連想配列として使用する
- $_SESSION は、関数やメソッドの内部で使用する場合、global $_SESSION; とする必要がない
$_SESSIONは、PHPの定義済み変数のセッション変数です。この変数は、配列型の配列変数であり、現在のセッションに登録されている値から渡されたデータが格納されている変数です。
配列型である $_SESSION は、連想配列として使用します。$_SESSION['mail'] = 'support@wepicks.net'; echo $_SESSION['mail']; というような形です。
$_SESSIONは、スーパーグローバル変数なので、スクリプトのコード中どこからでも使用することが出来る変数です。関数やメソッドの内部で使用する場合にも global $_SESSION; とする必要はありません。
$_SESSIONはPHPの定義済み変数
PHPの定義済み変数はスーパーグローバル変数とも言います。
$_SESSION = PHPの定義済み変数 = スーパーグローバル変数
また、$_SESSIONは自動グローバル変数とも呼ばれます。
(PHPには定義済みの定数というものもあります。詳細はこちらを参照下さい。)
PHPの定義済み変数(=スーパーグローバル変数)
$GLOBALS (グローバル変数) | ・グローバルスコープで使用可能なすべての変数への参照 ・連想配列として使用 |
---|---|
$_SERVER (サーバー変数) | ・サーバ情報および実行時の環境情報 ・連想配列として使用 |
$_GET (ゲット変数) | ・HTTP GET 変数 ・連想配列として使用 |
$_POST (ポスト変数) | ・HTTP POST 変数 ・連想配列として使用 |
$_FILES (ファイル変数) | ・HTTP ファイルアップロード変数 ・連想配列として使用 |
$_REQUEST (リクエスト変数) | ・HTTP リクエスト変数 ・連想配列として使用 |
$_SESSION (セッション変数) | ・セッション変数 ・連想配列として使用 |
$_ENV (環境変数) | ・環境変数 ・連想配列として使用 |
$_COOKIE (クッキー変数) | ・HTTP クッキー ・連想配列として使用 |
これら、PHPの定義済み変数は、プログラムコード中何処からでも使用することができます。関数の内部でも globalキーワードを使用せず呼び出すことが出来ます。このように、スーパーグローバル変数は非常に便利なものです。
通常、変数には有効範囲などのルールがあります。このルールは、PHPにおいて変数のスコープという宣言の場所とそれによる有効範囲として定められています。スコープには、「グローバルスコープ」「ローカルスコープ」「スタティック変数」「関数の引数」の4種類ありますが、これらすべてのスコープを持っているのがスーパーグローバル変数です。
変数のスコープについてはこちらを参照下さい。
※注意2:
ただし、スーパーグローバル変数は、関数やクラスメソッドの中の 可変変数 として使用することはできません。
可変変数についてはこちらを参照下さい。
セッションとは
- セッションは、サイトを訪れた個々のユーザーのデータを個別に管理する機能を提供する
- セッションデータは、セッションデータコンテナに格納される
- セッションデータは、一意な識別子(ユニークなID)セッションIDによって管理される
- サーバー側のセッションIDとブラウザ側のクッキーに格納されたPHPSESSIDが一意な同一のIDであり、ユーザーを関連付け識別する
※PHPSESSIDの名前は変更可能
セッションは、サイトを訪れた個々のユーザーのデータを個別に維持することによって、ユーザーとサーバー間の状態を管理する仕組みを提供します。セッションを利用することで、各ユーザー毎に、連続するリクエストにまたがって特定のデータを保持することで、ステートフル(状態を保持する)なWebサービスの構築が可能になります。データをページ間で引き継ぐことによって、例えば、複数ページのフォームから成る問い合わせフォームやショッピングカートなどが作成できます。PHPではセッションを組み込みでサポートしています。
個々のユーザーのセッションデータは、セッションデータコンテナに格納され、ユーザーのリクエスト毎に更新されます。セッションデータコンテナの中では、一意な識別子(ユニークなID 例:kgek2dves7akmv3pq4qa5rjo02i86d9k)によってセッションデータを管理しています。この識別子をセッションIDと言います。このセッションIDは、始めてサイトに訪れるユーザーへも発行され、PHPSESSIDという名前のクッキーで保存されます。セッションデータコンテナに格納されるセッションIDとブラウザのクッキーに格納されているPHPSESSIDは一意となっており、ユーザーを識別することが出来います。サーバー側のセッションIDとブラウザ側のクッキーに格納されたPHPSESSIDが一意な同一のIDであり、これによりユーザーを関連付け識別し、状態を管理する仕組みを実現します。
セッションのデータは各ページの頭で自動的に読み込まれ、ページの最後で自動的に最新情報が保存されます。このデータは複数のページ間で利用可能であり、各ページで更新した内容も引き継がれます。あるページで更新した内容は、どのページでも読み込みが可能であり、連続するリクエストに対して常に最新のデータが提供されます。セッションへのデータの保存や読み込みは、 session_start()関数をコールした後、PHPのスパーグローバル変数である $_SESSION を利用します。
1 2 3 4 5 6 7 8 9 10 11 | <!-- サンプルコード --> //セッションデータを初期化 //セッションIDの新規発行、又は、既存のセッションを読み込む //$_SESSIONを読み込む session_start(); //変数をセッションに登録 $_SESSION['greeting'] = 'Hello World!'; //セッションを読み込み変数を呼び出す echo $_SESSION['greeting']; |
結果は
となります。
このようなセッション機能を活用することで、ショッピングカートやログイン機能などが実装できます。オンラインショッピングサイトなどで買い物をする際に、ユーザーがショッピングカートに入れた商品情報は、そのユーザーが買い物を完了させるまで、或いはサイトを離れるまで維持されています。ユーザーがカートに入れた商品情報はそのユーザーと関連付いています。また、認証が必要なサイトでユーザーがログインした場合、ログイン後、そのユーザーへのサービスが提供されます。サービスはユーザーがログアウトするまで、或いはサイトを離れるまでユーザーを識別して提供され続けます。
このように、セッションはユーザーを識別してそのユーザーに関連付いた個別の情報を保持する機能を提供するのです。
セッションを利用する
- セッションを利用するには、session_start()関数とセッション変数の$_SESSION(スーパーグローバル変数の1つ)を使用する
- session_id()関数 セッションIDを確認できる
- session_name()関数 セッション名を確認できる
- session_regenerate_id()関数 セッションIDを再発行できる
- session_unset()関数 セッション変数を開放できる
- session_destroy()関数 全セッションデータを破棄できる
※クッキーのPHPSESSIDは削除されません
セッションを利用するには、session_start()関数とセッション変数の$_SESSION(スーパーグローバル変数の1つ)を使用します。その他にセッション関連の関数をご紹介します。
session_start()関数
セッションを利用するには、まずページの最初でsession_start()関数をコールします。
1 2 3 4 5 6 | <!-- サンプルコード --> <?php session_start(); ?> <DOCTYPE> <html> <head> ・・ |
この関数をコールすると、新しくセッションIDを発行するか、または、既存のセッションを再開させます。新規にセッションIDを発行する場合は、新しいセッションを作成します。再開の場合は、セッションデータコンテナに登録されている内容をスーパーグローバル変数の$_SESSIONに読み込みます。読み込みは、ユーザーのブラウザに格納されているPHPSESSID(この名前は変更することが可能です)という名前のクッキーに格納されているセッションIDと、サーバー側のセッションIDを紐付けて行われます。この場合、クッキーではなく、$_GETや$_POSTによって渡されるセッションIDによって行われることもあります。これは、クッキーが使用できない場合にセッションIDを$_GETや$_POSTで伝播する場合になります。
session()関数でセッションをスタートさせた後、セッション変数の$_SESSIONを利用して、セッションにデータを登録したり、登録したデータを読み込んだりします。
1 2 3 4 5 6 7 8 9 10 11 | <!-- サンプルコード --> <?php //セッションデータを初期化 //セッションIDの新規発行、又は、既存のセッションを読み込む //$_SESSIONを読み込む session_start(); //変数をセッションに登録 $_SESSION['string'] = 'Hello World!'; //出力 echo $_SESSION['string']; ?> |
結果は
となります。
一度セッションに登録されれば、$_SESSION['string']は他のページでも読み込むことが出来ます。
1 2 3 4 5 | <!-- サンプルコード --> <?php session_start(); echo $_SESSION['string']; ?> |
結果は
となります。
ユーザーがブラウザを閉じるまで、$_SESSION['string']は何時でも利用可能です。
session_id()関数
session_id()関数は現在のセッションIDを返します。
1 2 3 4 5 | <!-- サンプルコード --> <?php session_start(); echo session_id(); ?> |
以下のような値が返されます。
session_name()関数
session_name()関数は現在のセッション名を返します。
1 2 3 4 5 | <!-- サンプルコード --> <?php session_start(); echo session_name(); ?> |
結果は
となります。
※この名前はデフォルトで設定されていますが、php.iniの設定で変更が可能です。セキュリティー上セッション名は予測されないものが良いとされています。変更は、php.iniのsession.nameディレクティブで指定します。
session_regenerate_id()関数
session_regenerate_id()関数は現在のセッションIDを再発行します。
1 2 3 4 5 6 | <!-- サンプルコード --> <?php session_start(); session_regenerate_id(); echo session_id(); ?> |
ページを読み込む度にセッションIDの値が更新されます。
この関数は、例えばユーザーがログインした際、機密性の高い情報を$_SESSIONに格納するなどした場合、新しいセッションIDを発行することでセッションIDの漏洩によるデータの盗聴リスクを下げます。
session_unset()関数
session_unset()関数は全てのセッション変数を開放します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <!-- サンプルコード --> <?php //セッション初期化 session_start(); //$_SESSIONに値を代入 $_SESSION['string'] = 'Hello World!'; $_SESSION['count'] = 1240; $_SESSION['bool'] = TRUE; //出力 echo $_SESSION['string']."<br>\n"; echo $_SESSION['count']."<br>\n"; echo $_SESSION['bool']."<br>\n"; //セッション変数開放 unset($_SESSION); //セッション変数内容展開 var_dump($_SESSION); ?> |
結果は
1240
1
NULL
となります。
セッション変数を個別に削除
冒頭でも説明しましたが、session_unset(); や unset($_SESSION); を使用すると、セッション変数の登録内容がすべて消えるので、個別にセッション変数の内容を初期化する場合は、以下のように記述しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php //セッションスタート session_start(); //セッション変数に登録 $_SESSION['mail'] = 'support@wepicks.net'; $_SESSION['url'] = 'https://wepicks.net/'; //セッション変数の呼び出し echo $_SESSION['mail']."<br>\n"; echo $_SESSION['url']."<br>\n"; //セッション変数の削除 unset($_SESSION['mail']); //セッション変数の呼び出し echo $_SESSION['mail']."<br>\n"; echo $_SESSION['url']."<br>\n"; ?> |
https://wepicks.net/
https://wepicks.net/
$_SESSION['mail'] のみ削除されるので、$_SESSION['url'] の内容は呼び出しできます。
session_destroy()関数
session_destroy()関数はセッションに登録された全データを破棄します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!-- サンプルコード --> <?php //セッション初期化 session_start(); //$_SESSIONに値を代入 $_SESSION['string'] = 'Hello World!'; $_SESSION['count'] = 1240; $_SESSION['bool'] = TRUE; //出力 echo $_SESSION['string']."<br>\n"; echo $_SESSION['count']."<br>\n"; echo $_SESSION['bool']."<br>\n"; //セッション破棄 session_destroy(); ?> |
結果は
1240
1
となります。
session_destroy()関数をコールした後、他のページでセッションに登録した変数を読み込んでも値は表示されません。
1 2 3 4 5 6 7 8 9 | <!-- サンプルコード --> <?php //セッション初期化 session_start(); //出力 echo $_SESSION['string']."<br>\n"; echo $_SESSION['count']."<br>\n"; echo $_SESSION['bool']."<br>\n"; ?> |
呼び出している変数そのものが無いので以下のようなエラーが表示されます。
※php.ini の error_reporting ディレクティブが E_ALL | E_STRICT の場合
1 2 | <!-- サンプルコード --> PHP Notice: Undefined index: string・・・・ |
これは、存在しない変数(初期化されていない変数)を扱った場合に出力されるエラーです。
この関数をコールしても、ブラウザのクッキーは削除されません。クッキーに保存されているPHPSESSIDの値は残ります。session_destory()関数を実行した後に、他のページでsession_start()関数でセッションを再開させた場合、セッションIDはsession_destory()関数をコールする前と同一のIDになります。PHPSESSIDに関連した$_SESSIONは空になっています。セッションによりログイン機構などを実装している場合、ユーザーがログアウトした際はセッションIDも破棄する必要があります。session_destory()関数に加えて、setcookie()関数でPHPSESSID名のクッキーを削除してください。
セッションクッキーを削除するコードの例です。ページの一番最初に記述して下さい。setcookie()関数はすべての出力の前に実行します。ヘッダー(header)情報、<DOCTYPE>タグ、<html>タグ、空白、echo、print などより前にコールする必要があります。
1 2 3 4 5 6 7 8 | <!-- サンプルコード --> <?php //クライアントのセッションクッキーを削除 $sSessionName = session_name(); if(isset($_COOKIE[$sSessionName])){ setcookie($sSessionName, '', time() - 1800, '/'); } ?> |
セッションの終了
- セッションはブラウザを閉じた時点で終了する
- php.iniのsession.cookie_lifetimeで有効期限を設定できる
通常、ユーザーのブラウザに保存されたPHPSESSID名のクッキー(セッションID)は、ブラウザを閉じた時点で破棄されます。ブラウザを閉じればセッションが終了となります。次にサイトを訪れた際は、新しいセッションIDが発行され新規にセッションがスタートされます。
このセッションクッキーの有効期限を設定することが出来ます。php.iniのsession.cookie_lifetimeディレクティブで秒数を指定することで、ブラウザを閉じてもセッションIDが保存されたクッキーは削除されなくなります。
クッキー(cookie)が使用できない場合
- クッキー(cookie)が無効になっている場合は、URLのパラメーターとしてセッションIDを伝播する
ユーザーの環境によっては、クッキーが無効にされていたり、そもそも利用できない場合があります。そのような場合は、クッキーにセッションIDが保存されずユーザーを識別することが出来ません。対応策としてURLにセッションIDを埋め込んで伝播する方法があります。php.ini の session.use_trans_sid ディレクティブが 1 となっている場合、自動的にセッションIDがURLのパラメーターとして追加されます。session.use_trans_sid ディレクティブを設定できない場合は、PHPの定数SIDを利用してください。この定数には、「name=ID」 形式でセッション名とセッションIDが格納されています。SIDはセッションIDがセッションクッキーに保存されている場合には空文字列が代入されます。
URLパラメーターとして送信されたセッションIDは$_GETで受け取ることが出来ます。
page1.php
1 2 3 4 5 6 | <!-- サンプルコード --> URLパラメーターにセッションIDを記述する <a href="http://www.tryphp.ne/page2.php?PHPSESSID=126uvgrpmd2v4uvk4ncpdnd11136rstu">次ページ</a> 定数SIDを使用してURLパラメーターに記述する <a href="http://www.tryphp.ne/page2.php?<?php echo htmlspecialchars(SID); ?>">次ページ</a> |
※SIDは、XSS関連攻撃の抑制のため、htmlspecialchars() を使用して出力します。
page2.php
1 2 3 4 5 6 7 8 9 10 11 12 13 | <!-- サンプルコード --> <?php //フィルタ $sessid = $_GET['PHPSESSID']; //URLエスケープ URLエンコード処理 $url['sessid'] = urlencode($sessid); //リンク文字列作成 $link = "https://wepicks.net/page3.php?PHPSESSID={$url['sessid']}"; //httpクライアントエスケープ $htmllink = htmlentities($link, ENT_QUOTES, 'UTF-8'); //出力 echo '<a href="'.$htmllink .'">URL</a>'; ?> |
サンプルコード
session.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <!-- サンプルコード --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <head> <title>セッション</title> </head> <body> <h3>SESSION変数の登録と読み込み</h3> <?php //セッションデータを初期化する session_start(); //セッション変数の$_SESSIONに連想配列として値を格納 $_SESSION['sitename'] = 'PHPウェブプログラミングのTRYPHP'; //セッション名 echo 'セッション名は、 <strong>[ '.session_name()." ]</strong><br>\n"; //セッションID echo 'セッションIDは、 <strong>[ '.session_id()." ]</strong><br>\n"; //SID echo 'SIDは、 <strong>[ '.SID." ]</strong>※クッキーが無効の場合表示<br>\n"; //$_SESSIONを読み込む echo '$_SESSION[\'sitename\']の値は <strong>[ '.$_SESSION['sitename']." ]</strong><br>\n"; ?> <br><a href="session_2.php">次のページへ</a> <br><a href="session_2.php?<?php echo htmlspecialchars(SID); ?>">次のページへ(クッキーが無効の場合のURL)</a> </body> </html> |
session_2.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <!-- サンプルコード --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <head> <title>セッション</title> </head> <body> <h3>SESSION変数の読み込み ページを移動しても$_SESSION['sitename']の値は利用できる</h3> <?php //セッションデータを初期化する session_start(); //セッション名 echo 'セッション名は、 <strong>[ '.session_name()." ]</strong><br>\n"; //セッションID echo 'セッションIDは、 <strong>[ '.session_id()." ]</strong><br>\n"; //SID echo 'SIDは、 <strong>[ '.SID." ]</strong>※クッキーが無効の場合表示<br>\n"; //$_SESSIONを読み込む echo '$_SESSION[\'sitename\']の値は <strong>[ '.$_SESSION['sitename']." ]</strong><br>\n"; ?> <h3>SESSIONの削除</h3> <?php //現在のセッションに関連づけられた全てのデータを破棄 session_destroy(); //個別に削除 //$_SESSION['sitename'] = ''; //全てのセッション変数を削除 //$_SESSION = array(); ?> <br><a href="session_3.php">次のページへ</a> <br><a href="session_3.php?<?php echo htmlspecialchars(SID); ?>">次のページへ(クッキーが無効の場合のURL)</a> </body> </html> |
session_3.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <!-- サンプルコード --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <head> <title>セッション</title> </head> <body> <h3>前のページでsession_destory()を実行したので、SESSION変数は空になります</h3> <?php //セッションデータを初期化する session_start(); //セッション名 echo 'セッション名は、 <strong>[ '.session_name()." ]</strong><br>\n"; //セッションID echo 'セッションIDは、 <strong>[ '.session_id()." ]</strong><br>\n"; //SID echo 'SIDは、 <strong>[ '.SID." ]</strong>※クッキーが無効の場合表示<br>\n"; //$_SESSIONを読み込む echo '$_SESSION[\'sitename\']の値は <strong>[ '.$_SESSION['sitename']." ]</strong><br>\n"; ?> <br><a href="session_4.php">次のページへ</a> <br><a href="session_4.php?<?php echo htmlspecialchars(SID); ?>">次のページへ(クッキーが無効の場合のURL)</a> </body> </html> |
session_4.php
※session_4.phpの一番最初DOCTYPEより前に以下のコードを記述して下さい。
1 2 3 4 5 6 7 8 | <!-- サンプルコード --> <?php //クライアントのセッションクッキーを削除 $sSessionName = session_name(); if(isset($_COOKIE[$sSessionName])){ setcookie($sSessionName, '', time() - 1800, '/'); } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <!-- サンプルコード --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <head> <title>セッション</title> </head> <body> <h3>セッションクッキーを削除したので、次のページでセッションIDが再発行されます</h3> <?php //セッションデータを初期化する session_start(); //セッション名 echo 'セッション名は、 <strong>[ '.session_name()." ]</strong><br>\n"; //セッションID echo 'セッションIDは、 <strong>[ '.session_id()." ]</strong><br>\n"; //SID echo 'SIDは、 <strong>[ '.SID." ]</strong>※クッキーが無効の場合表示<br>\n"; ?> <br><a href="session_5.php">次のページへ</a> <br><a href="session_5.php?<?php echo htmlspecialchars(SID); ?>">次のページへ(クッキーが無効の場合のURL)</a> </body> </html> |
session_5.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <!-- サンプルコード --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <head> <title>セッション</title> </head> <body> <h3>セッションIDが再発行されました</h3> <?php //セッションデータを初期化する session_start(); //セッション名 echo 'セッション名は、 <strong>[ '.session_name()." ]</strong><br>\n"; //セッションID echo 'セッションIDは、 <strong>[ '.session_id()." ]</strong><br>\n"; //SID echo 'SIDは、 <strong>[ '.SID." ]</strong>※クッキーが無効の場合表示<br>\n"; ?> <br><a href="session.php">最初へ</a> <br><a href="session.php?<?php echo htmlspecialchars(SID); ?>">最初へ(クッキーが無効の場合のURL)</a> </body> </html> |
タグ(=記事関連ワード)
日付
最終更新日:2024年07月31日