Проверка, является ли значение $_COOKIE пустым или нет

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

$user_cookie = $_COOKIE["user"];

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

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

6 ответов

Решение

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

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

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

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

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

  • "" (пустой строки)
  • 0 (0 как целое число)
  • 0.0 (0 как число с плавающей запятой)
  • "0" (0 как строка)
  • НОЛЬ
  • ЛОЖНЫЙ
  • array () (пустой массив)
  • var $ var; (объявленная переменная не в классе)

Взято прямо из руководства по PHP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

if (!isset($_COOKIE["user"])) {
   // code if the value is not set
}
Другие вопросы по тегам