「PHPの基礎 - セッション」の版間の差分

ナビゲーションに移動 検索に移動
編集の要約なし
55行目: 55行目:
クライアントごとに様々な値が書き込まれるため、セッションIDを識別子として、クライアントを識別することができる。<br>
クライアントごとに様々な値が書き込まれるため、セッションIDを識別子として、クライアントを識別することができる。<br>
<br>
<br>
セッション変数に値を書き込む場合は、定義済みの変数$_SESSIONを使用する。<br>
セッション変数に値を書き込む場合は、定義済みの変数<code>$_SESSION</code>を使用する。<br>
  $_SESSION[セッション変数名] = 値
  $_SESSION[セッション変数名] = 値
<br>
<br>
91行目: 91行目:
   
   
       $_SESSION["date"] = date('c');
       $_SESSION["date"] = date('c');
    }
?>
</syntaxhighlight>
<br><br>
== セッション変数の削除とセッションIDの削除 ==
保存されたセッション変数を削除するには、<code>unset</code>関数を使用する。<br>
<br>
void unset(mixed var [, mixed var [, mixed ...]])
unset関数は、指定した変数を破棄する。
パラメータ:
    var  削除したい変数
<br>
以下の例では、セッション変数visitedを削除している。<br>
<syntaxhighlight lang="php">
unset($_SESSION("visited"));
</syntaxhighlight>
<br>
また、全てのセッション変数を削除するには、以下のように空の配列を変数<code>$_SESSION</code>に代入する。<br>
<syntaxhighlight lang="php">
$_SESSION = array();
</syntaxhighlight>
<br>
<u>※注意</u><br>
<u>変数<code>$_SESSION</code>自体を削除しないこと。</u><br>
<br>
ログアウト等でセッション自体を破棄する場合、クライアントに保存されているセッションIDを削除した後、セッションを破棄する。<br>
まず、クライアントにはクッキーが保存されているため、クッキーを削除する。<br>
(クッキーの削除については、[[PHPの基礎 - クッキー#クッキーの削除]]を参照すること)<br>
<syntaxhighlight lang="php">
if(isset($_COOKIE["PHPSESSID"]))
{
    setcookie("PHPSESSID", '', time() - 1800, '/');
}
</syntaxhighlight>
<br>
次に、session_destroy関数を使用して、セッションに登録された値を全て破棄する。<br>
bool session_destroy(void)
session_destroy関数は、現在のセッションに 関連づけられた全てのデータを破棄する。
この関数は、セッションに関するグローバル変数を破棄しない。
また、セッションクッキーを破棄しない。
戻り値:
    成功した場合はtrue、失敗した場合はfalseを返す。
<br>
<syntaxhighlight lang="php">
// Sample1.php
<?php
    session_start();
?>
<?php
    if(!isset($_SESSION["visited"]))
    {
      print('初回の訪問です。セッションを開始します。');
      $_SESSION["visited"] = 1;
      $_SESSION["date"] = date('c');
    }
    else
    {
      $visited = $_SESSION["visited"];
      $visited++;
      print('訪問回数は'.$_SESSION["visited"].'です。<br>');
      $_SESSION["visited"] = $visited;
      if(isset($_SESSION["date"]))
      {
          print('前回の訪問日時は'.$_SESSION["date"].'です。<br>');
      }
      $_SESSION["date"] = date('c');
    }
?>
<p><a href="./Sample1.php">ログアウトする</a></p>
</syntaxhighlight>
<br>
<syntaxhighlight lang="php">
// Sample2.php
<?php
    session_start();
?>
<?php
    print('セッション変数の一覧を表示します。<br>');
    print_r($_SESSION);
    print('<br>');
    print('セッションIDを表示します。<br>');
    print($_COOKIE["PHPSESSID"].'<br>');
    print('<p>ログアウトします</p>');
    $_SESSION = array();
    if(isset($_COOKIE["PHPSESSID"]))
    {
      setcookie("PHPSESSID", '', time() - 1800, '/');
    }
    session_destroy();
?>
<p><a href="./Sample3.php">ログアウトの確認</a></p>
</syntaxhighlight>
<br>
<syntaxhighlight lang="php">
// Sample3.php
<?php
    session_start();
?>
<?php
    print('セッション変数の確認をします。<br>');
    if(!isset($_SESSION["visited"]))
    {
      print('セッション変数visitedは登録されていません。<br>');
    }
    else
    {
      print($_SESSION["visited"].'<br>');
    }
    print('セッションIDの確認をします。<br>');
    if(!isset($_COOKIE["PHPSESSID"]))
    {
      print('セッションは登録されていません。<br>');
    }
    else
    {
      print($_COOKIE["PHPSESSID"].'<br>');
     }
     }
  ?>
  ?>

案内メニュー