Сессия личного кабинета на сайте
Не могу понять как сделать, с куками легче, но я выбрал сессии.
Вот сама задача:
Есть файл head.php - Он отвечает за навигационную панель в верху сайта, когда пользователь не вошел в Личный кабинет, отображается кнопка: "Войти", я не знаю как сделать так, что-бы когда сессия была активна, отображалась не "Войти" а "Личный Кабинет".
Возможно ли соеденить сессию с cookie?
Ответы (2 шт):
Всё возможно. Сделал краткий пример (пожалуйста, смотрите комментарии внимательно).
Файл первый - к примеру index.php:
<?php
if(!isset($_SESSION['enter'])) session_start(); //Если нет значений, стартуем сессию.
if(isset($_COOKIE['role'])){ // Проверяем наличие куки
$role = $_COOKIE['role']; // Сохраняем куки
} else {
$role = null; // Если нет, то null (это просто для понимания, можно всё и в одном сделать).
}
?>
<form method="post" action="stackover.php">
<div>
<?php if(isset($_SESSION['enter']) or $role != null){ // Проверяем запущена сессия и есть ли данные в куки, если да, то показываем следующее:
if($role == 'admin'){ // Если роль админ, то выводим соответствующую надпись
echo '<div>Вы админ. Поздравляю!</div>';
} elseif($role == 'user'){ // Если роль user, то другую.
echo '<div>Вы пользователь</div>';
} else { // Если роль не введена, то показываем кнопку войти в личный кабинет. Тут добавил поле для выбора юзера просто для демонстрации. А так роль определяете по самому пользователю.
echo '<select name="role"><option>admin</option><option>user</option></select>';
echo '<button name="LK" formmethod="post">Личный кабинет</button>';
}
} else { // Если ни сесии нет активной, ни данных в куки, то показываем кнопку входа
echo '<button name="enter" formmethod="post">Войти</button>';
};?>
</div>
</form>
Второй файл - обработчик. К примеру stackover.php (в форме сверху прописан):
<?php
if(isset($_POST['enter'])){ // Если нажата кнопка "Войти"
$_SESSION['enter'] = 'user'; // Записываем данные в сессию. По сути неважно какое значение, если нет необходимости персонализовать.
}
if(isset($_POST['role'])){ // Если введены значения в селект поле роли
$_SESSION['enter'] = 'user'; // Добавляем значение в сессию
$role = $_POST['role']; // Получаем параметр селекта. Повторюсь-это для примера. Даные роли Вы должны будете получать из самого пользователя из БД.
setcookie('role', $role); // Записываем его в куки
}
header("Location: http://ru.stackoverflow.com/"); // Переходим на нужную страницу ошибки или личного кабинета и так далее
Я со всем разобрался, в файле check-login.php (проверка на правильность пароля и логина) в сессии я создал куки под названием auth, и теперь через этот код, я проверяю, активны ли куки
<?php
if($_COOKIE['user'] == 'true']:
И дальше идут значения, но все же, спасибо за ответ)