Проверка, является ли значение $_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
}