if(!isset($_COOKIE['user']) || !isset($_COOKIE['admin'])):
Вообщем я столкнулся с такой проблемой: Мне надо сделать проверку сохранена ли cookie ['user'] или ['admin']. Если нет, то выводить в header болк с кнопкой входа/регистрации, а если есть, то проверить isset($_COOKIE['admin']). Если да, то вывести блок с кнопками добавить товар и выход, если isset($_COOKIE['admin']) неверно, то просто кнопку выхода. Весь код рабочий, если по одиночке делать проверку(Например:if(!isset($_COOKIE['admin'])):), то выведет кнопки добавить товар и выход, а если (if(!isset($_COOKIE['user'])):), то только кнопку выхода. Вот основной код:
<?php
if(!isset($_COOKIE['user']) || !isset($_COOKIE['admin'])):
***Кусок html разметки***
?>
<?php else: ?>
<?php if(isset($_COOKIE['admin'])): ?>
***Кусок html разметки***
<?php endif; ?>
***Кусок html разметки***
<?php endif; ?>
У меня не получается всё это объединить, чтобы была одновременная проверка двух cookie.
if(!isset($_COOKIE['user']) || !isset($_COOKIE['admin'])):
Не рабочий код(но в моём уме он должен работать))
Может кто-то знает как эту проблему решить?
<?php
if(!isset($_COOKIE['user']) || !isset($_COOKIE['admin'])) {
echo('
HTML Code
');
} else {
if(isset($_COOKIE['admin'])) {
echo('
HTML Code
');
};
echo('
HTML Code
');
};
?>
Код выше не решает проблему и пробный вариант. Это код создания куки при авторизации:
<!-- В auth.php (авторизация) -->
else if ($user['admin'] != 0) {
setcookie("admin", $user['name'], time() + (3600 * 12 * 30), "/"); // 1(имя куки) 2(у переменной $user берём имя, которое берётся с бд) 3(время жизни куки)
header('location: /');
session_destroy();
exit();
} else {
setcookie("user", $user['name'], time() + (3600 * 12 * 30), "/"); // 1(имя куки) 2(у переменной $user берём имя, которое берётся с бд) 3(время жизни куки)
header('location: /');
session_destroy();
};
Ответы (2 шт):
Почему не написать так?
if (isset($_COOKIE['admin']) || isset($_COOKIE['user'])) {
if (isset($_COOKIE['admin'])) {
//admin code
} else {
//user code
}
} else {
//login html
}
В простом коде проще разобраться. У опытных программистов есть несколько приёмов, позволяющих упростить код типа вашего. Во-первых надо дать осмысленные имена выражениям, которые проверяются в if'ах:
<?php
$isUser = isset($_COOKIE['user']);
$isAdmin = isset($_COOKIE['admin']);
?>
Во-вторых лучше проверять позитивные условия (нашим мозгам так проще воспринимать утверждения):
<?php if ($isUser || $isAdmin): ?>
<?php if ($isAdmin): ?>
кнопка "Добавить товар"
<?php endif ?>
кнопка "Выход"
<?php else: ?>
кнопка "Логин"
<?php endif ?>
Как видите, так гораздо проще.
UPD: Обратите внимание, что кука -- просто HTTP-заголовок, который отправляет пользователь (любой пользователь может отправить "admin"). Если вам надо ограничить доступ к админскому функционалу, то следует использовать сессии.