Как я могу запретить пользователю получать доступ к странице, когда они не вошли в систему? Я хочу, чтобы он был перенаправлен на страницу входа. Я знаю, что это имеет какое-то отношение к сеансам.
Он работает следующим образом:
Конечно, все это очень, очень просто. В вашей сессии вы можете сохранить сложный пользовательский объект или что угодно. Кодирование удачи.
Как отметил Светлозар Ангелов, следующий код будет хорошо работать:
if (!isset($_SESSION['nID']))
header("Location: login.php");
Однако.. это фактически не защитит страницу от пользователей, которым действительно нужен доступ. Вам нужно внести некоторые изменения:
if (!isset($_SESSION['nID']))
{
header("Location: login.php");
die();
}
Это предотвращает появление ботов и умных пользователей, которые знают, как игнорировать заголовки браузеров, попадая на страницу и вызывая проблемы. Он также позволяет странице остановить выполнение остальной части страницы и сохранить ресурсы.
Также следует отметить, что $_SESSION ['nID'] может быть заменен для любой другой переменной, которую вы используете для хранения имен пользователей или идентификаторов.
Когда он регистрирует - сохраняет переменную сеанса. Затем в начале каждой страницы
session_start();
if (!isset($_SESSION['nID']))
header("Location: login.php");
Если логин в порядке
session_start();
$_SESSION['nID'] = 1; //example
Выполните следующие действия:
Создайте страницу login.php, доступную всем, где пользователь вводит свое имя пользователя и пароль в форме. Эта форма должна быть отправлена самому login.php. (Действие = 'login.php'). Также включите скрытую переменную в вашу форму, которая отслеживает, была ли отправлена форма.
Если скрытая переменная установлена, проверьте, существует ли в вашей базе имя пользователя ($_POST['user']
) и что пароль совпадает с именем пользователя. Если это так, сохраните имя пользователя в переменной $_SESSION следующим образом:
$_SESSION['username'] = $_POST['user'];
Если это не так, перезагрузите login.php следующим образом:
echo 'header("login.php")'; //You should not have echoed anything before this
Теперь включите login.php на каждой странице пользователя, которую вы создаете. Предположим, вы пишете приложение электронной почты, создайте inbox.php, как этот
include ("login.php")
Теперь login.php будет проверять, установлена ли переменная сеанса 'user' и разрешить доступ только к авторизованным пользователям.