session_start

関数の概要

session_start は、PHPでセッションを開始するための関数です。セッションとは、ユーザーごとに情報をサーバー側で保持し、複数ページにわたって状態を維持する仕組みを指します。この関数を呼び出すことで、セッションIDを発行または既存のセッションIDを読み込み、サーバー側に保存されているユーザー固有のデータにアクセスできるようになります。

パラメータの説明

  • array $options (省略可能) – セッションに関するオプションを連想配列で指定します。例えば、cookieのパスやドメイン、セキュリティ設定など細かい制御が可能です。

主な$optionsのキー例:

  • cache_limiter – HTTPキャッシュ制御の設定(例: ‘nocache’, ‘private’など)
  • cookie_lifetime – セッションクッキーの有効期間(秒単位)
  • cookie_path – クッキーの有効パス
  • read_and_close – セッションを開始後、すぐにセッションファイルを閉じるかどうかの指定(bool)

戻り値

成功すると true、失敗すると false を返します。失敗する主な原因は、ヘッダー送信後に呼び出される場合や、セッションファイルの読み書きに問題がある場合などです。

使用例

基本的な使い方

<?php
session_start();
$_SESSION['username'] = 'taro';
echo 'ユーザー名をセッションに保存しました。';
?>

この例では、session_start()でセッションを開始し、$_SESSIONグローバル変数にユーザー名を保存しています。これにより、他のページでも同じセッションIDでこの値にアクセスできます。

セッション開始時にオプションを指定する例

<?php
session_start([
    'cookie_lifetime' => 3600,  // クッキーの有効期間を1時間に設定
    'read_and_close' => true     // セッション開始後すぐに閉じる(書き込みなし)
]);
?>

このコードは、クッキーの寿命を1時間に設定し、セッションを読み込んだ後にすぐ閉じることでリソースの競合を防ぎます。例えば、読み取り専用の処理などで使います。

ヘッダー送信前にセッションを開始する注意例

<?php
// 以下はNG例(エラーの原因になる)
echo 'こんにちは';
session_start();
?>

PHPのセッションはクッキーを使うため、session_start()は必ずHTTPヘッダー送信前(画面出力より前)に呼ぶ必要があります。上記のように出力が先行するとエラーになります。

関連する関数

  • session_destroy() – セッションを完全に削除します。
  • session_id() – セッションIDの取得や設定ができます。
  • session_regenerate_id() – セッションIDを新しく生成します。セキュリティ強化に有効です。
  • session_abort() – セッションの変更を破棄し、開始前の状態に戻します。

まとめ

session_start()はPHPでセッションを管理する上で最も基本的な関数です。処理の最初に呼び出し、ユーザーごとの状態を維持するために欠かせません。ヘッダー送信前に必ず実行し、必要に応じてオプション設定も活用しましょう。また、関連関数を組み合わせることで、セキュリティや利便性を高めることが可能です。