# Авторизация через сессию на PHP

Наша авторизация должна работать так: пользователь, который хочет авторизоваться на сайте, заходит на страницу `login.php`, вбивает правильные логин и пароль и далее ходит по страницам сайта уже будучи авторизованным.

Чтобы другие страницы сайта знали о том, что наш пользователь авторизован, мы должны хранить в сессии пометку об этом.

Пока наша авторизация не совсем рабочая, так как сессию мы еще не подключили и другие страницы сайта не могут понять, авторизован пользователь или нет.

Будем хранить пометку об авторизации в переменной сессии `$_SESSION['auth']` - если там записано `true`, то пользователь авторизован, а если `null` - то не авторизован.

Давайте внесем соответствующую правку в наш код:

`<?php session_start(); if (!empty($_POST['password']) and !empty($_POST['login'])) { $login = $_POST['login']; $password = $_POST['password']; $query = "SELECT * FROM users WHERE login='$login' AND password='$password'"; $res = mysqli_query($link, $query); $user = mysqli_fetch_assoc($res); if (!empty($user)) { $_SESSION['auth'] = true; } else { // неверно ввел логин или пароль } } ?>`

Теперь на любой странице сайта мы можем проверить, авторизован пользователь или нет, вот таким образом:

`<?php if (!empty($_SESSION['auth'])) { } ?>`

Можно закрыть текст какой-нибудь страницы целиком для неавторизованного пользователя:

`<?php if (!empty($_SESSION['auth'])): ?> <!DOCTYPE html> <html> <head> </head> <body> <p>текст только для авторизованного пользователя</p> </body> </html> <?php else: ?> <p>пожалуйста, авторизуйтесь</p> <?php endif; ?>`

Можно закрыть только часть страницы:

`<!DOCTYPE html> <html> <head> </head> <body> <p>текст для любого пользователя</p> <?php if (!empty($_SESSION['auth'])) { echo 'текст только для авторизованного пользователя'; } ?> <p>текст для любого пользователя</p> </body> </html>`

Пусть на нашем сайте, кроме страницы `login.php`, есть еще и страницы `1.php`, `2.php` и `3.php`. Сделайте так, чтобы к этим страницам мог получить доступ только авторизованный пользователь.

Пусть на нашем сайте есть еще и страница `index.php`. Сделайте так, чтобы часть этой страницы была открыта для всех пользователей, а часть - только для авторизованных.

Модифицируйте ваш код так, чтобы при успешной авторизации в сессию записывался также логин пользователя.

Сделайте так, чтобы при заходе на любую страницу сайта, авторизованный пользователь видел свой логин, а не авторизованный - ссылку на страницу авторизации.

← →
↑