2010-05-25 14 views
6

Jestem początkującym z webappami i PHP.

Próbuję dostać plik cookie, który nie został jeszcze utworzony, to znaczy, kiedy próbuję załadować stronę, która szuka nieistniejącego pliku cookie, pojawia się błąd, próbowałem pozbyć się tego z spróbuj/złap, ale nie sukces. To ten kod próbuję:

try{ 

    $cookie = $_COOKIE['cookiefoo']; 

    if($cookie){ 

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

} 

Jak mogę to osiągnąć, jakieś pomysły, to byłoby ceniona go.

Odpowiedz

7

Zastosowanie isset aby zapobiec żadnych ostrzeżeń lub zawiadomień dzieje jeśli klucz jest nieistniejące:

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

To samo można zrobić z array_key_exists, choć myślę isset jest bardziej zwięzły:

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

Jeśli szukasz niepustej wartości, warunek taki jak: jeśli (! Pusty ($ _ COOKIE ['cookiefoo'])) wystarcza, nie ma potrzeby wstawiania. –

+2

Tak czy inaczej, isset lub pusty tak naprawdę. Zawsze używam isset() – MacMac

+2

+1 dla isset,! Empty zwróci wartość false dla wartości takich jak liczba całkowita 0, pusta tablica i pusty ciąg znaków. Isset zwróci wartość false tylko dla wartości null i zmiennej, która nie jest ustawiona. – Daniel