2011-05-07 10 views
5

¿Puede alguien decirme por qué puedo hacer eco dentro de este bloque cuando la sesión tiene un valor claramente?usando vacío no proporciona resultados correctos

$_SESSION['test']['testing'] = 'hgkjhg'; 
echo $_SESSION['test']['testing']; // Produces hgkjhg (Clearly not empty) 

if(empty($_SESSION['test']['testing'])){ 
echo 'Hello'; // This echoes and to me, shouldn't 
} 
+0

En este momento no conseguir su pregunta ....? – Pushpendra

+2

Léalo atentamente: http://php.net/manual/en/function.empty.php – Pushpendra

+4

Lo estoy leyendo pero no veo nada que indique por qué mi ejemplo debería funcionar. En mi caso, 'testing' tiene 'hgkjhg' ya que es valor, por lo que está configurado, lo que significa que NO está vacío, pero puedo repetirlo – jim

Respuesta

0

Intente comentar el resto de su código. Algo está en la sesión o estás asignando valores en otro lugar de tu secuencia de comandos.

<?php 
session_start(); 

$_SESSION['test']['testing'] = 'hgkjhg'; 
echo $_SESSION['test']['testing']; // Produces hgkjhg (Clearly not empty) 

if(empty($_SESSION['test']['testing'])){ 
echo 'Hello'; // This echoes and to me, shouldn't 
} 

var_dump($_SESSION); 
?> 

Resultados:

hgkjhgarray (1) {[ "test"] => array (1) {[ "probar"] => string (6) "hgkjhg"}}

Solo por el argumento, estás diciendo que ves "Hola" en lugar de "hgkjhg". "hgkjhg" debería mostrarse.

0

Intente cambiar en:

$_SESSION['test']['testing'] = 'hgkjhg'; 
echo $_SESSION['test']['testing']; 

if(empty($_SESSION['test']['testing'])){ 
    echo 'Hello. Error in $_SESSION !'; 
} 

Si se sigue haciendo eco "Hola", entonces usted tiene algún lugar más adelante en el código de una línea con:

echo 'Hello'; 
1

La verdadera respuesta es de aproximadamente session_start . A diferencia de session_register, la asignación directa a $ _SESSION no llama automáticamente a session_start.

Directamente desde PHP manual para session_register()

Si session_start() no fue llamado antes de que esta función se llama, un llamada implícita a session_start() con no se harán parámetros. $ _SESSION no imita este comportamiento y requiere session_start()

+1

Esto significaría que OP no está obteniendo un resultado de la segunda línea de su código, como él dice. ¿Es esto correcto?'echo $ _SESSION ['test'] ['testing']; // Produce hgkjhg (Claramente no está vacío) ' –

+0

podría estar almacenado en una variable local/global $ _SESSION, no en la almacenada en el servidor. – dragonjet

+0

por cierto, lo probé en mi PC, $ _SESSION realmente saldrá después de que se haya asignado, pero no se almacenará en el servidor y se volverá a buscar en otra página a menos que use session_start(); – dragonjet

Cuestiones relacionadas