2010-05-25 28 views
6

Tôi là người mới sử dụng webapp và PHP.

Tôi đang cố gắng lấy cookie chưa được tạo, ý tôi là, khi tôi cố gắng tải trang tìm kiếm cookie không tồn tại, tôi gặp lỗi, tôi đã cố gắng loại bỏ điều này bằng thử/nắm bắt nhưng không thành công. Mã này tôi đang cố gắng:

try{ 

    $cookie = $_COOKIE['cookiefoo']; 

    if($cookie){ 

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

} 

Làm cách nào để đạt được điều này, bất kỳ ý tưởng nào, nó sẽ được đánh giá cao.

Trả lời

7

Sử dụng isset để ngăn chặn một bất kỳ cảnh báo hay thông báo xảy ra nếu chính là không tồn tại:

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

Cùng có thể được thực hiện với array_key_exists, mặc dù tôi nghĩ isset ngắn gọn hơn:

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

Nếu bạn tìm kiếm giá trị không trống, điều kiện như: nếu (! Empty ($ _ COOKIE ['cookiefoo'])) là đủ, không cần thiết. –

+2

Dù bằng cách nào, isset hoặc empty đều thực sự. Tôi luôn luôn sử dụng isset() – MacMac

+2

+1 cho isset,! Empty sẽ trả về false cho các giá trị như một số nguyên 0, một mảng trống và một chuỗi rỗng. Isset sẽ chỉ trả về false cho null và một biến không được thiết lập. – Daniel

Các vấn đề liên quan