作成日:2006/05/24
2E.3 セッション関連関数
| 構文 | 説明 |
|---|---|
bool session_start ( void ) |
session_start() は、必要に応じて以下の何れかを行います。この関数は常に TRUE を返します。
|
string session_name ([string name]) |
session_name() は、現在のセッション名を返します。name を指定した場合は、 現在のセッ ション名を変更します( 返されるのは変更前のセッション名です )。 セッション名は、( クッキーおよびURLの )セッションIDを参照するのに使用されます。 セッション名は、リクエストが開始された時点では、設定ファイルの session.name で指定された値にリセットされます。 従って、セッション名を変更する場合は session_start() の前に呼び出す必要があります。 用例:
// デフォルトのPHPSESSIDを表示します
echo session_name("NewSession");
|
string session_id ([string id]) |
session_id() は、セッションIDを返します。idを指定してセッションIDを変更する事もできます。 この場合は、session_start() の前呼び出す必要があります。 |
bool session_destroy ( void ) |
session_destroy() は、現在のセッションに関連する保存データを破棄します。 成功した場合に TRUE を、失敗した場合に FALSE を返します。 この関数は、現在のセッションIDに結び付いているシリアル化されたデータを破棄しますが、 セッション変数は破棄しません。従って現リクエストでは $_SESSION は有効です。 また、この関数は、セッションクッキーを破棄しません。 従って、 セッションクッキーとして保存されているセッションIDは有効なままです。 セッションIDを再発行するにはセッションクッキーからセッション名を削除する必要があります。 このような処理はログアウトのようなセッションの切断処理で必要になります。 用例:セッションの切断
session_start();
$_SESSION = array(); // 全てのセッション変数の破棄
if (isset($_COOKIE[session_name()])) { // セッションIDの破棄
// setcookieのパスに注意
setcookie(session_name(), '', time()-24*60*60, '/');
}
session_destroy(); // セッションに関連する保存データを破壊する
手元の実験ではセッション名のクッキーを削除する場合、
setcookie() のパスを '/' にする必要がありました。
これはPHPが保存するクッキーのパスがカレントパスではなくてルートパス( '/' )を指定している為と思われます。
|
※ $_SESSIONを使用する場合、 旧来からのセッション変数用の関数 session_register(), session_unregister(), session_is_registered(),session_unset() を使用する必要はありません。 また、混乱の原因になるので $_SESSION に統一すべきです。
