22 Stimmen

PHP: Prüfen ob Session bereits besteht - Fehlermeldung "A session had already been started" verhindern

Frage von Gast | Letztes Update am 09.03.2023 | Erstellt am 08.02.2018

Ich arbeite in einem meiner PHP-Scripts mit Sessions. Hier kommt es ab und an leider vor, dass offenbar schon eine PHP-Session besteht, nachdem ich session_start() aufrufe. Dadurch erhalte ich die folgende Fehlermeldung:

Notice: A session had already been started - ignoring session_start()

Wie kann ich diese Fehlermeldung verhindern und prüfen, ob bereits eine Session existiert und session_start() entsprechend nur dann aufrufen, wenn es noch keine Session gibt?

AntwortenPositivNegativDatumStimmen
44 Stimmen

Du kannst einfach mit isset() überprüfen, ob bereits eine Session besteht beziehungsweise in diesem Fall ob keine Session offen ist.

Das machst du folgendermaßen:

if (!isset($_SESSION)) {
  // es wurde noch keine Session gestartet
  session_start();
}

Die beste Lösung wäre allerdings, deinen Code so anzulegen, dass session_start() verlässlich immer nur einmal aufgerufen wird, zum Beispiel immer beim Starten deines Scripts. Bei einem guten Code-Design sollte es eigentlich nicht zu einem mehrmaligen Aufrufen von session_start() kommen.
Letztes Update am 09.03.2023 | Erstellt am 08.02.2018

AntwortenPositiv Negativ
33 Stimmen

Du kannst auch die PHP-Funktion session_status() verwenden, um zu überprüfen, ob aktuell eine Session besteht.

Sofern eine Session offen ist, erhältst du von session_status() PHP_SESSION_ACTIVE zurück. Du kannst also schreiben:

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

Dies prüft ob session_status() ungleich PHP_SESSION_ACTIVE (= eine Session ist aktiv) ist und startet dann eine neue Session.

Andere Rückgabewerte von session_status() sind:

  • PHP_SESSION_DISABLED: Sessions sind disabled.
  • PHP_SESSION_NONE: Sessions sind enabled, aber es existiert keine Session.
  • PHP_SESSION_ACTIVE: Sessions sind enabled, und es existiert eine Session.

Siehe auch hier im PHP-Manual.
09.02.2018 um 02:54

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

PHP: Upload großer Dateien

Tutorial | 0 Kommentare

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.