Ответ 1
Используйте isset
, чтобы узнать, существует ли файл cookie.
if(isset($_COOKIE['cookie'])){
$cookie = $_COOKIE['cookie'];
}
else{
// Cookie is not set
}
Я пробовал
$cookie = $_COOKIE['cookie'];
Если cookie не установлен, это даст мне ошибку
PHP ERROR
Undefined index: cookie
Как я могу помешать ему передать мне пустую переменную >
Используйте isset
, чтобы узнать, существует ли файл cookie.
if(isset($_COOKIE['cookie'])){
$cookie = $_COOKIE['cookie'];
}
else{
// Cookie is not set
}
Вы можете использовать array_key_exists для этой цели следующим образом:
$cookie = array_key_exists('cookie', $_COOKIE) ? $_COOKIE['cookie'] : null;
В зависимости от ваших потребностей.
// If not set, $cookie = NULL;
if (isset($_COOKIE['cookie'])) { $cookie = $_COOKIE['cookie']; }
или
// If not set, $cookie = '';
$cookie = (isset($_COOKIE['cookie'])) ? $_COOKIE['cookie'] : '';
или
// If not set, $cookie = false;
$cookie = (isset($_COOKIE['cookie'])) ? $_COOKIE['cookie'] : false;
Литература:
Попробуйте следующее:
$cookie = isset($_COOKIE['cookie'])?$_COOKIE['cookie']:'';
//checks if there is a cookie, if not then an empty string
Пример, не упомянутый в ответах: допустим, вы установили cookie на 60 секунд, если условия выполняются правильно:
if ($some_condition == $met_condition) {
setcookie('cookie', 'some_value', time()+ 60, "/","", false);
}
Технически мы должны проверить, что он установил И он не истек, или он будет выдавать предупреждения и т.д..:
$cookie = ''; //or null if you prefer
if (array_key_exists('cookie', $_COOKIE) && isset($_COOKIE['cookie'])) {
$cookie = $_COOKIE['cookie'];
}
Вы хотели бы проверить таким образом, чтобы гарантировать, что просроченные куки не используются и они установлены, приведенный выше пример, очевидно, не всегда может установить куки и т.д. Мы всегда должны это учитывать. Массив array_key_exists в основном предназначен для предотвращения появления предупреждений в журналах, но без него он будет работать.