1

既存の小さな Web アプリの PHP ヘッダーに次のものがあります。私の質問は次のとおりです。これにより、ページが最初にチェックしてからセッションを開始するための追加のステップをジャンプすることはありませんか? これのポイントは何ですか?

セッションが存在する場合は使用できませんsession_startか?存在しない場合は無視されませんか?

PHP

if (!isset($_SESSION)) {
   session_start();
}
4

2 に答える 2

5

session_start() を呼び出したときにセッションが存在しない場合、新しいセッションが作成されます。既存のセッションがある場合は、それを再開します。

于 2013-08-08T14:02:34.350 に答える
3

私が間違っていなければ、$_SESSIONスーパーグローバルは常に存在するため、コードは実際にはあまり機能しません。

PHP <5.4 を使用している場合は、代わりに次のコードを使用します。

if (session_id() == "") {
    session_start();
}

PHP 5.4 以降では、これを使用します。

if(session_status() != PHP_SESSION_ACTIVE) {
    session_start();
}

実際にはsession_start()1回だけ呼び出す必要がありますが、@ScottHelmeが言ったように、複数回呼び出しても悪影響はなく、毎回セッションが作成または再開されます。

于 2013-08-08T14:19:15.680 に答える