1 1 Stimme

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

Frage von Gast | 08.02.2018 um 12:50 Uhr

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

Computer Experte

Profil anzeigen | Nachricht
Avatar
11 Stimme

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.
08.02.2018 um 19:54 Uhr

AntwortenPositiv Negativ

NetLabel

Profil anzeigen | Nachricht
Avatar
22 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 Uhr

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Knallenge Jeans - Bin ich ein Fetischist?
Offene Abstimmung | 6 Kommentare

Wichtiger Hinweis

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.