2017-08-07 64 views
0

我只想檢查$_COOKIE是否有我的實際cookie。

關於Stackoveflow我讀了很多關於不使用empty(),因爲它返回true當給出0時,可能是cookie的情況。還有更多,請參閱:LainIwakura's answer

如果我的客戶試圖訪問一個頁面,但他沒有cookie,他應該被阻止。

public function index($request, $response) 
{   
    if($_COOKIE != " ") {  
     // Okay 
    } else {   
     return "Please log in first"; 
    }   
} 

如果我var_dump[$_COOKIE]我得到這個:

array(0) 
{ 
} 

當我登錄,我得到這樣的:

array(1) { 
    ["AuthSession"]=> 
    string(44) "Ym9iOjU5ODhFN0E2Ov0k6qKicxKpkePKi1AjlXglURFm" 
} 

if($_COOKIE != " ")不起作用,empty()也沒有這種情況下的解決方案。 if(isset($_COOKIE))也不起作用,因爲似乎始終存在此變量的實例,無論它是否填充。您認爲哪種解決方案可以檢查cookie是否存在?

回答

2

最好的方法是檢查您創建的實際cookie('AuthSession')是否已設置,而不是檢查$ _COOKIE是否設置或計數> 0。如果您沒有明確地創建了這個cookie,它不會被設置,這與$ _COOKIE不一樣。

public function index($request, $response) 
{   
    if(isset($_COOKIE['AuthSession']) {  
     // Okay 
    } else {   
     return "Please log in first"; 
    }   
} 
0

用途:

isset($_COOKIE) 

,看它是否有一個cookie

使用

(count($_COOKIE) === 0) === FALSE 

檢查它不是空

因此,你的代碼看起來像:

public function index($request, $response) 
{   
    if(isset($_COOKIE) and ((count($_COOKIE) === 0) === FALSE)) {  
     // Okay 
    } else {   
     return "Please log in first"; 
    }   
}