PHP の session_start() について。
session_start() を複数回呼ぶとどうなるの?というお話。
日本語のマニュアルにはこう書かれてます。
注意: PHP 4.3.3では、セッションが既に開始されている状態で session_start()をコールすると E_NOTICEレベルのエラーを発生させます。 またその場合二度目のセッションスタートは単に無視されます。
PHP 4.3.3 では?4.3.3 限定?それ以降は?
と思って英語版マニュアルを見てみると・・・
Note: As of PHP 4.3.3, calling session_start() while the session has already been started will result in an error of level E_NOTICE. Also, the second session start will simply be ignored.
As of PHP 4.3.3
やっぱり 4.3.3 だけ?
と思って As of の意味を調べてみると
~現在{げんざい}で、(~を基点{きてん}として)それ以後{いご}は
なるほど。PHP 4.3.3 以降は、ってことね。
というわけで、PHP 4.3.3 以降では、
session_start() を複数回呼んでも2回目以降は単に無視されるから、
既に session_start() が呼ばれてるかどうかは気にせずに、
$_SESSION にアクセスする前はとりあえず session_start() を呼ぶ。というスタイルで問題なし。
という事が分かりました。めでたし。
One Comment
qz1wwr3ao10ded22
テストです。脈絡無くガス爆発です。
One Trackback
session_start と __wakeup で無限ループ。…
PHP 5.2.6 でのお話。
PHP のクラスでは __wakeup っていう特殊メソッドが使えます。
例えば、セッションに保存したオブジェクトを復元する時に、
変数を復元するだけじゃなく、何か計算をし…