Проверка, является ли значение $ _COOKIE пустым или нет - PullRequest
2 голосов
/ 22 июня 2011

Я назначаю cookie для переменной:

$user_cookie = $_COOKIE["user"];

Как я могу проверить, получил ли $user_cookie какое-то значение или нет?

Должен ли я использовать if (empty($user_cookie)) или что-то еще?

Ответы [ 6 ]

5 голосов
/ 22 июня 2011

Использовать isset () примерно так:

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

Указывает, присутствует ли ключ с именем user в $_COOKIE.Само значение может быть "", 0, NULL и т. Д. В зависимости от контекста некоторые из этих значений (например, 0) могут быть действительными.

PS: для второй части:Я бы использовал оператор === для проверки false, NULL, 0, "" или может быть (string) $user_cookie !== "".

5 голосов
/ 22 июня 2011

Это пустые вещи, которые вернут true для:

  • "" (пустая строка)
  • 0 (0 в виде целого числа)
  • 0.0 (0as float)
  • "0" (0 в виде строки)
  • NULL
  • FALSE
  • array () (пустой массив)
  • var $ var;(объявленная переменная отсутствует в классе)

Взятые прямо из php руководства

Поэтому, чтобы ответить на ваш вопрос, да, empty() будетвполне приемлемая функция, и в этом случае я бы предпочел ее более isset()

2 голосов
/ 30 августа 2018

Если вашей переменной cookie является массив :

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

Если вашей переменной cookie является not array :

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

Я использую этот подход.

1 голос
/ 22 июня 2011

isset(), однако имейте в виду, что empty() нельзя использовать в выражениях, только в переменных.

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

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

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

(isset() это путь, когда дело касается куки )

1 голос
/ 22 июня 2011

Попробуйте пустую функцию в php http://php.net/manual/en/function.empty.php

Вы также можете использовать isset http://www.php.net/manual/en/function.isset.php

0 голосов
/ 22 июня 2011

Вы можете использовать:

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

но иногда вы хотите установить, если значение установлено в первую очередь

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