Pro Anfrage gibt es ein paar verschiedene Möglichkeiten, wie Sie, ob eine Sitzung gestartet wurde das beurteilen kann, wie zum Beispiel:Wie kann ich feststellen, ob eine Sitzung aktiv ist?
$isSessionActive = (session_id() != "");
Oder:
$isSessionActive = defined('SID');
diese jedoch beide fehlschlagen, wenn Sie Starten Sie eine Sitzung und schließen Sie sie. session_id()
gibt die ID der vorherigen Sitzung zurück, während SID
definiert wird. Wenn Sie zu diesem Zeitpunkt session_start()
aufrufen, wird E_NOTICE
generiert, wenn Sie bereits eine Sitzung aktiviert haben. Gibt es einen vernünftigen Weg, um zu überprüfen, ob eine Sitzung gerade aktiv ist, ohne auf die Pufferung der Ausgabe zurückgreifen zu müssen, den "Shut-Up" -Operator (@session_start()
) oder etwas anderes, genauso wie Hacky?
EDIT: Ich habe einen Patch, um zu versuchen schrieb in PHP enthalten diese Funktionalität zu erhalten: http://bugs.php.net/bug.php?id=52982
EDIT 2011.08.29: Neue Funktion hinzugefügt, um PHP 5.4 zu beheben diese: "Expose session status via new function, session_status"
// as of 8/29/2011
$isSessionActive = (session_status() == PHP_SESSION_ACTIVE);
EDIT 05.12.2011: session_status() auf das PHP-Handbuch.
Dies ist vielleicht hacky: ['session_is_active()'] (http://stackoverflow.com/questions/3788369/how-to-tell-if-a-session-is-active/7656468#7656468), aber zumindest etwas, was ich gefunden habe. Danke für den Fehlerbericht, schön zu sehen, dass dies in 5.4 gelöst wurde. – hakre
Noch eine relevante Frage mit dem 5.4 Zusatz, da ich gerade auf eine 5.3 Box gedrängt habe und 'session_status()' fehlt! – quickshiftin
Das ist sicherlich merkwürdig, wie es tatsächlich auf meinem 5.4 Build ist. Willst du sagen, dass du 5.3 oder 5.4 benutzt? War es eine benutzerdefinierte oder vordefinierte PHP-Binärdatei? Haben Sie in 'phpinfo()' einen Abschnitt "Sitzung"? In Aktion: http://codepad.viper-7.com/PiZmcw – ken