Сессия личного кабинета на сайте

Не могу понять как сделать, с куками легче, но я выбрал сессии.

Вот сама задача:
Есть файл head.php - Он отвечает за навигационную панель в верху сайта, когда пользователь не вошел в Личный кабинет, отображается кнопка: "Войти", я не знаю как сделать так, что-бы когда сессия была активна, отображалась не "Войти" а "Личный Кабинет".

Возможно ли соеденить сессию с cookie?


Ответы (2 шт):

Автор решения: Denis640Kb

Всё возможно. Сделал краткий пример (пожалуйста, смотрите комментарии внимательно).

Файл первый - к примеру 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/"); // Переходим на нужную страницу ошибки или личного кабинета и так далее
→ Ссылка
Автор решения: Amadea

Я со всем разобрался, в файле check-login.php (проверка на правильность пароля и логина) в сессии я создал куки под названием auth, и теперь через этот код, я проверяю, активны ли куки

<?php
    if($_COOKIE['user'] == 'true']:

И дальше идут значения, но все же, спасибо за ответ)

→ Ссылка