13,005
回編集
編集の要約なし |
|||
55行目: | 55行目: | ||
クライアントごとに様々な値が書き込まれるため、セッションIDを識別子として、クライアントを識別することができる。<br> | クライアントごとに様々な値が書き込まれるため、セッションIDを識別子として、クライアントを識別することができる。<br> | ||
<br> | <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>'); | |||
} | } | ||
?> | ?> |