web-dev-qa-db-fra.com

Comment vérifier si un PHP la session est vide?

Est-ce une mauvaise pratique?

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

Y a-t-il un moyen de vérifier si c'est vide ou s'il n'est pas réglé? Je suis en train de faire ça:

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

Est-ce que !isset vérifie simplement si un $_SESSION[''] existe et ne vérifie pas s'il y a ou non des valeurs dans le tableau?

37
willdanceforfun

J'utiliserais isset et empty :

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

array_key_exists est une bonne alternative à l'utilisation de isset pour vérifier les clés:

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

Assurez-vous d'appeler session_start avant de lire ou d'écrire dans le tableau de sessions.

82
karim79

Utilisez isset, empty ou array_key_exists (en particulier pour les clés de tableau) avant d'accéder à une variable dont vous n'êtes pas sûr de l'existence. Alors changez l'ordre dans votre deuxième exemple:

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

vous recherchez PHP empty() function

6
knittl

Vous pouvez utiliser la fonction count () pour voir le nombre d'entrées dans le tableau $ _SESSION. Ce n'est pas une bonne pratique. Vous devriez plutôt définir l'ID de l'utilisateur (ou quelque chose de similaire) pour vérifier si la session a été initialisée ou non.

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

(En supposant que vous souhaitiez vérifier si quelqu'un est connecté)

5
svens

Si vous voulez vérifier si des sessions sont disponibles, vous voudrez probablement utiliser la fonction session_id()

session_id () renvoie l'identifiant de session de la session en cours ou la chaîne vide ("") s'il n'y a pas de session en cours (aucun identifiant de session en cours n'existe).
4
mjs
if(isset($_SESSION))
{}
else
{}
0
hfarazm