我只是想检查$_COOKIE
是否有我的实际cookie。
在Stackoveflow上我读了很多关于不使用empty()
的内容,因为它在给出0时返回true
,这可能是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是否存在,需要采用哪种解决方案?
答案 0 :(得分:2)
最好的方法是检查您正在创建的实际cookie('AuthSession')是否已设置,而不是检查$ _COOKIE是否已设置或具有计数> 0.如果您没有明确地创建该cookie,则不会设置它,这与$ _COOKIE不同。
public function index($request, $response)
{
if(isset($_COOKIE['AuthSession']) {
// Okay
} else {
return "Please log in first";
}
}
答案 1 :(得分: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";
}
}