page1.php:
<?php session_start(); if ($_POST['password'] == "testpass") $_SESSION['authenticated'] = true; ?>
page2.php
<?php session_start(); if (isset($_SESSION['authenticated']) && $_SESSION['authenticated'] == true) { echo "Super secret stuff!"; } ?>
Может ли пользователь войти без безопасного пароля?
Нет. Данные в переменной $ _SESSION хранятся на сервере, недоступном для пользователя.
Сессия связана с пользователем через файл cookie. Куки с идентификатором (то есть длинной случайной строкой) отправляются пользователю для идентификации пользователя и ссылки на его сеанс. Если кто-то еще получит доступ к этому куки-файлу, он может использовать тот же код, чтобы притворяться, что он пользователь, и таким образом он может войти без пароля.
Сеанс может быть изменен только с PHP-кода, в отличие от $_POST, $_GET, $_COOKIE
т. Д.
В стороне, я думаю, вы можете использовать empty()
для упрощения вашего условного:
<?php session_start(); if (!empty($_SESSION['authenticated']) { echo "Super secret stuff!"; } ?>
Сессия может быть изменена в разных случаях. См. Это -> Отравление сеанса