检查$ _COOKIE值是否为空

时间:2011-06-22 06:28:44

标签: php variables cookies superglobals

我将cookie分配给变量:

$user_cookie = $_COOKIE["user"];

如何检查$user_cookie是否收到了某些值?

我应该使用if (empty($user_cookie))还是别的什么?

6 个答案:

答案 0 :(得分:5)

这些是空的东西将返回true:

  • “”(空字符串)
  • 0(0为整数)
  • 0.0(浮动为0)
  • “0”(0为字符串)
  • NULL
  • FALSE
  • array()(空数组)
  • var $ var; (不在类中的声明变量)

直接从php manual

开始

所以要回答你的问题,是的,empty()将是一个完全可以接受的功能,在这种情况下,我更喜欢isset()

答案 1 :(得分:5)

像这样使用isset()

if (isset($_COOKIE["user"])){
$user_cookie = $_COOKIE["user"];
}

这会告诉您user中是否存在名为$_COOKIE的密钥。值本身可以是""0NULL等。根据上下文,其中一些值(例如0)可能有效。

PS:对于第二部分,我使用===运算符来检查falseNULL0"",或者可能是(string) $user_cookie !== ""

答案 2 :(得分:2)

如果您的Cookie变量是数组

$ fkill someapp :8080 node :3333 :9000

如果您的Cookie变量不是不是数组

if (!isset($_COOKIE['user']) || empty(unserialize($_COOKIE['user']))) {
    // cookie variable is not set or empty
}

我使用这种方法。

答案 3 :(得分:1)

答案 4 :(得分:1)

isset(),但请记住,如empty()它不能用于表达式,只能用于变量。

isset($_COOKIE['user']); // ok

isset($user_cookie = $_COOKIE['user']); // not ok

$user_cookie = $_COOKIE['user'];
isset($user_cookie); // ok

isset() 处理Cookie的方式

答案 5 :(得分:0)

您可以使用:

if (!empty($_COOKIE["user"])) {
   // code if not empty
}

但有时您想设置是否在第一个位置设置了值

if (!isset($_COOKIE["user"])) {
   // code if the value is not set
}