2010-05-25 6 views
6

Soy novato con webapps y PHP.

Estoy tratando de obtener una cookie que aún no se ha creado, quiero decir, cuando intento cargar una página que busca una cookie inexistente me sale un error, traté de deshacerme de esto con un intenta/atrapa pero no tiene éxito. Este es el código que estoy intentando:

try{ 

    $cookie = $_COOKIE['cookiefoo']; 

    if($cookie){ 

      //many stuffs here 
    } 
    else 
     throw new Exception("there is not a cookie"); 
} 
catch(Exception $e){ 

} 

Como puedo lograr esto, cualquier idea, se la agradeceria.

Respuesta

7

Uso isset para evitar un advertencias o avisos de sucediendo si la clave es inexistente:

if(isset($_COOKIE['cookiefoo']) && !empty($_COOKIE['cookiefoo'])) { 
    // exists, has a value 
    $cookie = $_COOKIE['cookiefoo']; 
} 

El mismo se puede hacer con array_key_exists, aunque creo que isset es más concisa:

if(array_key_exists('cookiefoo', $_COOKIE) && !empty($_COOKIE['cookiefoo'])) { 
    // exists, has a value 
    $cookie = $_COOKIE['cookiefoo']; 
} 
+1

Si busca el valor no vacío, condición como: if (! Empty ($ _ COOKIE ['cookiefoo'])) es suficiente, no necesita isset. –

+2

De cualquier manera, isset o empty hace ambas realmente. Siempre uso isset() – MacMac

+2

+1 para isset,! Empty devolverá false para valores como un entero 0, una matriz vacía y una cadena vacía. Isset solo devolverá falso para null y una variable que no está configurada. – Daniel

Cuestiones relacionadas