Überprüfen Sie, ob die PHP-Sitzung bereits gestartet wurde
Ich habe eine PHP-Datei, die manchmal von einer Seite aufgerufen, die begonnen hat, eine Sitzung und manchmal von einer Seite, der nicht die Sitzung gestartet. Also wenn ich session_start()
auf dieses script bekomme ich manchmal die Fehlermeldung "session bereits gestartet". Dafür habe ich diese Zeilen:
if(!isset($_COOKIE["PHPSESSID"]))
{
session_start();
}
aber dieses mal habe ich diese Warnmeldung:
Notice: Undefined variable: _SESSION
Gibt es einen besseren Weg, um zu überprüfen, wenn die Sitzung schon begonnen hat?
Wenn ich @session_start
wird es machen alles richtig funktioniert und einfach die Klappe halten die Warnungen?
InformationsquelleAutor der Frage Logan | 2011-06-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Empfohlene Weg für Versionen von PHP >= 5.4.0
Quelle: http://www.php.net/manual/en/function.session-status.php
Versionen PHP < 5.4.0
InformationsquelleAutor der Antwort lovelyramos
Für PHP-Versionen vor PHP 5.4.0:
Obwohl, IMHO, sollten Sie wirklich darüber nachdenken, Umgestaltung Ihrer session-management-code, wenn Sie nicht wissen, ob oder nicht eine Sitzung gestartet wird...
Gesagt, meine Meinung ist subjektiv, und es gibt Situationen (Beispiele sind beschrieben in den Kommentaren unten), wo es nicht möglich sein kann, zu wissen, wenn die Sitzung gestartet wird.
InformationsquelleAutor der Antwort Alex
PHP 5.4 eingeführt session_status()die ist zuverlässiger, als sich auf
session_id()
.Betrachten Sie den folgenden Codeausschnitt:
So, um zu überprüfen, ob eine session gestartet wird, die empfohlene Methode, in PHP 5.4 ist nun:
InformationsquelleAutor der Antwort Benjamin
können Sie dies tun, und es ist wirklich einfach.
Hoffe es hilft 🙂
InformationsquelleAutor der Antwort miyuru
InformationsquelleAutor der Antwort k.bon
Vor PHP 5.4 gibt es keine zuverlässige Möglichkeit, zu wissen, andere als die Einstellung, die ein globales flag.
Betrachten:
Oder:
So, vor PHP 5.4 setzen Sie eine Globale boolean.
InformationsquelleAutor der Antwort Ryan Yoosefi
Für alle php-version
InformationsquelleAutor der Antwort supersuphot
Prüfen :
Quelle http://php.net
InformationsquelleAutor der Antwort Elshan
Verwenden session_id()es gibt eine leere Zeichenfolge zurück, wenn nicht eingestellt. Es ist zuverlässiger als die überprüfung der
$_COOKIE
.InformationsquelleAutor der Antwort Wesley van Opdorp
hoffe, es hilft !
InformationsquelleAutor der Antwort Mahesh Cheliya
Diese Arbeit sollte für alle PHP-Versionen. Es bestimmt die PHP-version, und überprüft dann, um zu sehen, wenn die Sitzung gestartet wird auf Basis der PHP-version. Dann, wenn die session nicht gestartet ist, beginnt er Sie.
InformationsquelleAutor der Antwort Dustin Poissant
Das einzige, was Sie tun müssen, ist:
InformationsquelleAutor der Antwort user3140580
Nicht sicher über die Effizienz einer solchen Lösung, aber diese ist aus dem Projekt arbeiten
Dies wird auch verwendet, wenn Sie müssen definieren Sie die Standard-Sprache
InformationsquelleAutor der Antwort Alex Khimich
Sollten Sie reorganisieren Ihr code, so dass Sie rufen Sie
session_start()
genau einmal pro Seite-Ausführung.InformationsquelleAutor der Antwort SamT
Antwort, BASIEREND auf @Meliza Ramos-Antwort(siehe erste Antwort) und http://php.net/manual/en/function.phpversion.php ,
AKTIONEN:
verwenden Sie nur openSession()
InformationsquelleAutor der Antwort
Eigentlich ist es jetzt zu spät, um es zu erklären hier eh seine war gelöst.
Dies war ein .inc-Datei von einem meiner Projekte, wo Sie konfigurieren Sie ein Menü für ein restaurant, indem Sie eine Schüssel und entfernen/hinzufügen oder die Reihenfolge ändern.
Die server-ich arbeitete in der Tat, hatte nicht die aktuelle version, damit ich flexibler. Es ist bis zu den Autoren verwenden möchten, und probieren Sie es aus.
InformationsquelleAutor der Antwort Thielicious
Ist dieses code-snippet, das für Sie arbeiten?
InformationsquelleAutor der Antwort Niroshan
Auf PHP 5.3 funktioniert dies für mich:
dann haben Sie. Wenn Sie nicht setzen die nicht bei der if-Anweisung zu Beginn der Sitzung wird beginnen, Weise ich nicht warum.
InformationsquelleAutor der Antwort Lucas M. Oliveira
InformationsquelleAutor der Antwort Sukanya Suku
PHP_VERSION_ID ist ab PHP 5.2.7, so dass Sie diese erste und, wenn notwendig , erstellen Sie es.
session_status
ist ab PHP 5.4 , so haben wir zu prüfen:InformationsquelleAutor der Antwort Christian Kruse
Was ich verwenden, um zu bestimmen, wenn eine Sitzung gestartet wurde, ist durch die Verwendung leer und isset wie folgt :
InformationsquelleAutor der Antwort Akintunde Olawale
Basierend auf meine Praxis, bevor Sie auf die
$_SESSION[]
müssen Sie rufen Siesession_start
jeder Zeit, um das Skript zu verwenden. Siehe den link unten für die Anleitung.http://php.net/manual/en/function.session-start.php
Zumindest für mich
session_start
ist verwirrend, da ein name. Einsession_load
mehr sein kann, klar.InformationsquelleAutor der Antwort Eduard Hasanaj
Ersetzen
session_start();
mit:InformationsquelleAutor der Antwort Harshit