PHP 7.1.0 Release Candidate 4 Released



Web サイトの訪問者にはセッションIDというセッションIDと呼ばれるユニークなIDが割りつけられ ます。このIDは、ユーザー側にクッキーとして保存するか、または、URL に埋め込みます。

セッションサポート機能により、スーパーグローバル配列 $_SESSION を使ってリクエスト間でデータを格納できるようになります。 来訪者がサイトにアクセスした際、 PHP は特定のセッションIDがリクエストとともに送信されているかどうかを ( session.auto_startが1の場合は)自動的に、または (session_start() により明示的な) 要求を受けて確認します。 このIDが送信されている場合には、以前保存された変数が再現されます。


session.auto_start をオンにした場合にオブジェクトをセッションに代入する唯一の方法は、 クラスの定義を auto_prepend_file でロードしておき、オブジェクトを serialize() したうえで後で unserialize() することです。

$_SESSION (およびそこに登録されたすべての変数) は、リクエストが終了したときに PHP が内部的にシリアライズします。 シリアライズの方式として、ini 設定 session.serialize_handler で指定したハンドラを使います。 未定義の登録変数は、未定義としてマーク付けされます。 これらの変数は、後でユーザーが定義しない限り、以降のアクセスにおいて セッションモジュールにより定義されません。


セッションデータはシリアライズされるので、 resource 型の変数はセッションに格納できません。

シリアライズハンドラ (php および php_binary) は、register_globals の制約を引き継いでいます。 そのため、数値のインデックスや特殊文字 (|!) を含む文字列のインデックスは使えません。 これらを使っていると、スクリプトのシャットダウン時にエラーが発生します。 php_serialize には、そのような制約はありません。 php_serialize は PHP 5.5.4 以降で使えます。


セッションを処理している時、 session_register()関数を使用するか スーパーグローバル配列$_SESSIONへ新しいキーを 追加することにより変数が登録されるまで、セッションのレコードは作 成されないことに注意してください。これは、セッションが session_start()関数により開始されている場合で も真です。


PHP 5.2.2 以降、 open_basedir を有効にして、許可するパスの一覧に "/tmp" を明示していない場合でも "/tmp" にセッションファイルを保存するようになっていました。 この機能は PHP 5.3.0 で削除されます。

add a note add a note

User Contributed Notes 3 notes

ryan dot jentzsch at gmail dot com
1 year ago
One thing that should be understood is that if you are creating a RESTfull service using sessions is by nature NOT a RESTfull process.
harshitcode25 at gmail dot com
2 years ago
PHP Session Variables
When you are working with an application, you open it, do some changes and then you close it. This is much like a Session. The computer knows who you are. It knows when you start the application and when you end. But on the internet there is one problem: the web server does not know who you are and what you do because the HTTP address doesn't maintain state.

A PHP session solves this problem by allowing you to store user information on the server for later use (i.e. username, shopping items, etc). However, session information is temporary and will be deleted after the user has left the website. If you need a permanent storage you may want to store the data in a database.

Sessions work by creating a unique id (UID) for each visitor and store variables based on this UID. The UID is either stored in a cookie or is propagated in the URL.
payal at radixweb dot com
5 years ago
If you use auto start session, Session cookie will not be created , it will be created only if you will use session_start()
To Top