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?
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.
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'] == '')
vous recherchez PHP empty()
function
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é)
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).
if(isset($_SESSION))
{}
else
{}