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