(PHP 4, PHP 5)
session_start — 新しいセッションを開始、あるいは既存のセッションを再開する
session_start() は、セッションを作成します。 もしくは、リクエスト上で GET, POST またはクッキーにより渡されたセッション ID に基づき現在のセッションを復帰します。
session_start() がコールされたりセッションが自動的に開始したりするときに、 PHP はセッションの open ハンドラおよび read ハンドラをコールします。 このハンドラとしては、デフォルトで組み込まれている保存ハンドラの他に PHP 拡張モジュールで提供されているもの (SQLite や Memcached など) も使えます。また、自作のハンドラを session_set_save_handler() で定義することもできます。 read コールバックは既存のセッションデータ (独自のシリアライズフォーマットで保存されているもの) を読み込み、 それを復元して自動的にスーパーグローバル $_SESSION に格納します。
名前付きのセッションを使用したい場合、 session_start() の前に session_name() をコールする必要があります。
session_start() は、 session.use_trans_sid が有効の場合に URL 書換え用の内部出力ハンドラを登録します。
ユーザーが ob_start() と共に ob_gzhandler または類似のものを使用している場合、 出力ハンドラの順番は正しく出力を行うために重要です。例えば、 セッション開始時にユーザーは ob_gzhandler を登録する必要があります。
この関数は、セッションが正常に開始した場合に TRUE
、それ以外の場合に FALSE
を返します。
バージョン | 説明 |
---|---|
5.3.0 |
何らかの理由でセッションの開始に失敗した場合に FALSE を返すようになりました。
これより前のバージョンでは常に TRUE を返していました。
|
4.3.3 |
セッションが既に開始されている状態で
session_start() をコールすると
E_NOTICE レベルのエラーを発生させます。
またその場合二度目のセッションスタートは単に無視されます。
|
例1 セッションの例 page1.php
<?php
// page1.php
session_start();
echo 'Welcome to page #1';
$_SESSION['favcolor'] = 'green';
$_SESSION['animal'] = 'cat';
$_SESSION['time'] = time();
// セッションクッキーが有効なら動作します
echo '<br /><a href="page2.php">page 2</a>';
// あるいは必要に応じてセッション ID を渡します
echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
?>
page1.php を表示した後なら、
page2.php はセッション上の情報を含んでいるはずです。
セッションについてのリファレンス を読むと、
セッションIDの伝達 に関する情報が得られます。
例えば、SID
とは何かといったことです。
例2 セッションの例: page2.php
<?php
// page2.php
session_start();
echo 'Welcome to page #2<br />';
echo $_SESSION['favcolor']; // green
echo $_SESSION['animal']; // cat
echo date('Y m d H:i:s', $_SESSION['time']);
// page1.php と同様に、ここで SID を使うこともできます
echo '<br /><a href="page1.php">page 1</a>';
?>
注意:
クッキーに基づくセッションを使用している場合、ブラウザに何か出力を行う前に session_start() をコールする必要があります。
注意:
ob_gzhandler() よりも zlib.output_compression の使用が推奨されています。
注意:
この関数は、設定によって複数の HTTP ヘッダを送信します。 これらのヘッダをカスタマイズするには session_cache_limiter() を参照ください。