it-swarm.com.de

Wie prüfen Sie, ob a PHP Sitzung ist leer?

Ist das eine schlechte Praxis?

if ($_SESSION['something'] == '')
{
    echo 'the session is empty';
}

Gibt es eine Möglichkeit zu überprüfen, ob sie leer ist oder nicht gesetzt ist? Ich mache das eigentlich:

if (($_SESSION['something'] == '') || (!isset($_SESSION['something'])) {
    echo 'the session is either empty or doesn\'t exist';
}

Wird !isset nur überprüft, ob ein $_SESSION[''] vorhanden ist, und nicht überprüft, ob im Array Werte vorhanden sind oder nicht

37
willdanceforfun

Ich würde isset und empty verwenden:

session_start();
if(isset($_SESSION['blah']) && !empty($_SESSION['blah'])) {
   echo 'Set and not empty, and no undefined index error!';
}

array_key_exists ist eine nette Alternative zur Verwendung von isset zur Suche nach Schlüsseln:

session_start();
if(array_key_exists('blah',$_SESSION) && !empty($_SESSION['blah'])) {
    echo 'Set and not empty, and no undefined index error!';
}

Stellen Sie sicher, dass Sie session_start aufrufen, bevor Sie vom Session-Array lesen oder in dieses schreiben.

82
karim79

Verwenden Sie isset, empty oder array_key_exists (insbesondere für Array-Schlüssel), bevor Sie auf eine Variable zugreifen, deren Existenz Sie nicht sicher sind. Ändern Sie also die Reihenfolge in Ihrem zweiten Beispiel:

if (!isset($_SESSION['something']) || $_SESSION['something'] == '')
10
Gumbo

sie suchen nach der Funktion PHP empty()

6
knittl

Sie können die Funktion count () verwenden, um zu sehen, wie viele Einträge sich im $ _SESSION-Array befinden. Dies ist keine gute Praxis. Sie sollten stattdessen die ID des Benutzers (oder etwas Ähnliches) festlegen, um zu überprüfen, ob die Sitzung initialisiert wurde oder nicht.

if( !isset($_SESSION['uid']) )
    die( "Login required." );

(Vorausgesetzt, Sie möchten prüfen, ob jemand eingeloggt ist.)

5
svens

Wenn Sie prüfen möchten, ob Sitzungen verfügbar sind, möchten Sie wahrscheinlich die Funktion session_id() verwenden: 

session_id () gibt die Sitzungs-ID für die aktuelle Sitzung oder die leere Zeichenfolge ("") zurück, wenn keine aktuelle Sitzung vorhanden ist (keine aktuelle Sitzungs-ID vorhanden).
4
mjs

Ich weiß, dass dies alt ist, aber ich bin auf ein Problem gestoßen, bei dem ich eine Funktion ausgeführt habe, nachdem ich überprüft habe, ob eine Sitzung stattgefunden hat. Es wurde jedes Mal ein Fehler ausgegeben, wenn ich versuchte, die Seite nach dem Abmelden zu laden. Trotzdem wurde gerade eine Fehlerseite protokolliert. Stellen Sie sicher, dass Sie exit () verwenden. wenn Sie auf dasselbe Problem stoßen.

     function sessionexists(){
        if(!empty($_SESSION)){
     return true;
         }else{
     return false;
         }
      }


        if (!sessionexists()){
           redirect("https://www.yoursite.com/");
           exit();
           }else{call_user_func('check_the_page');
         } 
0
Glenn
if(isset($_SESSION))
{}
else
{}
0
hfarazm