関数・クラス解説

session_start

version:PHP 4, PHP 5, PHP 7 (公式)

新しいセッションを開始、あるいは既存のセッションを再開する

公式リファレンス

書式

session_start ([ array $options = array() ] ) : bool

説明

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 を登録する必要があります。

パラメータ

options
オプションの連想配列を指定することができます。これは、現在設定されている セッションの設定ディレクティブ を上書きします。 連想配列のキーにはプレフィックス session. を含めてはいけません。 通常の設定ディレクティブ群に加えて、 read_and_close オプションを指定することもできます。 これを TRUE にすると、セッションを読み込んだらその場ですぐにクローズします。 セッションのデータを書き換えるつもりがない場合は、こうしておけば、意図せぬロックを防げます。

返値

この関数は、セッションが正常に開始した場合に TRUE、それ以外の場合に FALSE を返します。

注意

注意: クッキーに基づくセッションを使用している場合、ブラウザに何か出力を行う前に session_start() をコールする必要があります。
注意: ob_gzhandler() よりも zlib.output_compression の使用が推奨されています。
注意: この関数は、設定によって複数の HTTP ヘッダを送信します。 これらのヘッダをカスタマイズするには session_cache_limiter() を参照ください。

更新履歴

バージョン 説明
7.1.0 セッションを開始できなかった場合、 session_start() は、FALSE を返し、 $_SESSION を初期化しないようになりました。

サンプル

基本的なセッションの例

例1 page1.php

// page1.php session_start(); echo 'Welcome to page #1'; $_SESSION['favcolor'] = 'green'; $_SESSION['animal']   = 'cat'; $_SESSION['time']     = time(); // セッションクッキーが有効なら動作します echo 'page 2'; // あるいは必要に応じてセッション ID を渡します echo 'page 2';

page1.php を表示した後なら、 page2.php はセッション上の情報を含んでいるはずです。 セッションについてのリファレンス を読むと、 セッションIDの伝達 に関する情報が得られます。 例えば、SID とは何かといったことです。

例2 page2.php

// page2.php session_start(); echo 'Welcome to page #2'; echo $_SESSION['favcolor']; // green echo $_SESSION['animal'];   // cat echo date('Y m d H:i:s', $_SESSION['time']); // page1.php と同様に、ここで SID を使うこともできます echo 'page 1';

session_start() のオプションの指定

例3 クッキーの有効期限の上書き

// これは、有効期限が1日の永続クッキーを送信します session_start([     'cookie_lifetime' => 86400, ]);

例4 セッションの読み込みとクローズ

<?php// セッション内で何も変更する必要がないことがわかっている場合は、// セッションを読み込んですぐにクローズしてしまえば、// セッションファイルをロックして他のページをブロックしてしまうことを防げますsession_start([    'cookie_lifetime' => 86400,    'read_and_close'  => true,]);

参考

  • $_SESSION
  • 設定ディレクティブ session.auto_start
  • session_id() - 現在のセッション ID を取得または設定する
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール