既存の小さな Web アプリの PHP ヘッダーに次のものがあります。私の質問は次のとおりです。これにより、ページが最初にチェックしてからセッションを開始するための追加のステップをジャンプすることはありませんか? これのポイントは何ですか?
セッションが存在する場合は使用できませんsession_start
か?存在しない場合は無視されませんか?
PHP
if (!isset($_SESSION)) {
session_start();
}
既存の小さな Web アプリの PHP ヘッダーに次のものがあります。私の質問は次のとおりです。これにより、ページが最初にチェックしてからセッションを開始するための追加のステップをジャンプすることはありませんか? これのポイントは何ですか?
セッションが存在する場合は使用できませんsession_start
か?存在しない場合は無視されませんか?
PHP
if (!isset($_SESSION)) {
session_start();
}
session_start() を呼び出したときにセッションが存在しない場合、新しいセッションが作成されます。既存のセッションがある場合は、それを再開します。
私が間違っていなければ、$_SESSION
スーパーグローバルは常に存在するため、コードは実際にはあまり機能しません。
PHP <5.4 を使用している場合は、代わりに次のコードを使用します。
if (session_id() == "") {
session_start();
}
PHP 5.4 以降では、これを使用します。
if(session_status() != PHP_SESSION_ACTIVE) {
session_start();
}
実際にはsession_start()
1回だけ呼び出す必要がありますが、@ScottHelmeが言ったように、複数回呼び出しても悪影響はなく、毎回セッションが作成または再開されます。