2009-10-05 29 views
36

¿Es esta una mala práctica?¿Cómo verificar si una sesión de PHP está vacía?

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

¿Hay alguna manera de comprobar si está vacío o no está configurado? Estoy haciendo esto podía comprender:

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

¿El !isset simplemente comprueba si un $_SESSION[''] existen y no comprueba si es que hay valores en la matriz o no

Respuesta

76

me gustaría utilizar isset y empty:

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

array_key_exists es una buena alternativa al uso de isset para comprobar si hay claves:

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

Hacer Asegúrese de llamar al session_start antes de leer o escribir en la matriz de sesiones.

+5

no es necesario utilizar isset si ya está utilizando vacío. empty también comprobará si la variable existe, es decir, no es nula/indefinida – knittl

+0

No es necesario utilizar isset AND empty. –

+5

@knittl Es una buena práctica asegurarse de tener la variable antes de la prueba para ver si está vacía. – random

6

que busca empty() función de PHP

+15

vacío es peligroso porque también informa falso, 0 y "0" como vacío. – OIS

5

Puede usar la función count() para ver cuántas entradas hay en la matriz $ _SESSION. Esta no es una buena práctica. En su lugar, debe establecer la identificación del usuario (o algo similar) para comprobar si la sesión se inició o no.

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

(Suponiendo que desea comprobar si alguien está conectado)

10

Utilice isset, empty o array_key_exists (especialmente para teclas de matriz) antes de acceder a una variable de la que no está seguro. Así que cambiar el orden en el segundo ejemplo:

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

Si desea comprobar si las sesiones están disponibles, es probable que desee utilizar la función session_id():

session_id() devuelve el identificador de sesión para la sesión actual o la cadena vacía ("") si no hay una sesión actual (no existe una identificación de sesión actual).
0
if(isset($_SESSION)) 
{} 
else 
{} 
-1

Esto no es una mala práctica. Sin embargo, es posible que obtenga un error como

índice indefinido (la tecla que haya definido)

Así que la mejor práctica es comprobar si existe la clave de la matriz utilizando el incorporado en array_key_exists función.

Cuestiones relacionadas