As of session_start()

PHP の session_start() について。
session_start() を複数回呼ぶとどうなるの?というお話。

日本語のマニュアルにはこう書かれてます。

PHP: session_start - Manual

注意: PHP 4.3.3では、セッションが既に開始されている状態で session_start()をコールすると E_NOTICEレベルのエラーを発生させます。 またその場合二度目のセッションスタートは単に無視されます。

PHP 4.3.3 では?4.3.3 限定?それ以降は?

と思って英語版マニュアルを見てみると・・・

PHP: session_start - Manual

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() を呼ぶ。というスタイルで問題なし。

という事が分かりました。めでたし。

開発 | Permalink | Comment | Trackback URL |

One Comment

  1. Suzette Lawson
    Posted 2009/5/1 金曜日 at 21:41:11 | Permalink

    qz1wwr3ao10ded22

    テストです。脈絡無くガス爆発です。

One Trackback

  1. By JE no hitori chat on 2008/9/18 木曜日 at 20:47:42

    session_start と __wakeup で無限ループ。…

    PHP 5.2.6 でのお話。
    PHP のクラスでは __wakeup っていう特殊メソッドが使えます。
    例えば、セッションに保存したオブジェクトを復元する時に、
    変数を復元するだけじゃなく、何か計算をし…

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*