Как сделать авторизацию на сайте

Доктор, у меня мания всем всё объяснять... А, тьфу, не в то окно пишу. Ну и ладно, значит объясню вам, как сделать авторизацию на сайте, при условии, что вы новичок в PHP, в противном случае валите на другую статью, например эту :)

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

Сессия (сеанс) это вместе сочетание файла на стороне сервера, хранящего всю информацию, которую вы в него поместите, с локальным файлом куки, который содержит идентификатор сессии (по нему получаются данные с сервера). Нам не выгодно для авторизации использовать только куки - они ведь хранятся на локальном компьютере, и их легко будет подделать. А в случае с сеансами вы эти данные не получите, не зная ID сессии, который угадать весьма и весьма сложно.

Для создания файла сессии на сервере либо использования сеансовых переменных нам нужно на каждой странице вызывать функцию session_start(), обязательно ДО вывода какого-либо текста в браузер. PHP проверит, отправил ли браузер ему куки с ID сессии – если да, PHP загружает сеансовые переменные, в противном случае создает на сервере новый файл сессии и отправляет пользователю ID, чтобы в последующем у браузера был доступ к этим переменным.

Считывать и задавать сессионные переменные проще простого - это по сути манипуляции с массивом $_SESSION:
задаем так $_SESSION['user'] = 'vasya';
разрушаем так unset($_SESSION['user']);

Итак! Вы не представляете, насколько все просто:
- если пользователь не авторизован, показываем ему форму логина
- если он логинится нормально, авторизуем его
- теперь, когда он авторизован, ему будут показываться нормальные данные

Код будет примерно следующий:

session_start();

if ( !empty($_GET['logout']) ) // если юзер решил выйти
{
 // просто разрушаем переменные
 unset($_SESSION['logged'], $_SESSION['login']);
}

// сверяем данные из формы логина с нужными логином и паролем
if ( !empty($_POST['login']) and !empty($_POST['pass']) )
{
 if ( $_POST['login'] == 'vasya' and $_POST['pass'] == 'qwerty' ) // это очень грубый вариант авторизации %)
 {
 // сохраняем сеансовые переменные logged = true и login с именем пользователя
 $_SESSION['logged'] = 1;
 $_SESSION['login'] = 'vasya';
 }
}

if ( !isset($_SESSION['logged']) or empty($_SESSION['logged']) ) // если в сессии не указано, что пользователь залогинен
{
 // показываем форму для ввода пароля
 
 ?>
 <form action="auth.php" method="post">
 <input type="text" name="login" /> 
 <input type="password" name="pass" /> 
 <input type="submit" value="Ну давай!" />
 </form>
 <?php
}
else
{
 ?>
 <p>Привет, <?=$_SESSION['login']?>. Теперь у вас есть доступ к секретным данным. 
 <a href="/auth.php?logout=1">Выйти</a></p>
 <?php
}


Теперь сеансовые переменные logged и login будут доступны на любой странице, где вы не забудете написать session_start().

Если есть вопросы, задавайте в комментах. Демо можно глянуть тут

 Жду с нетерпением
ваших комментариев!
 

Подписаться на RSS

Вы можете нажать "подписаться", чтобы следить за моими новостями!
Так вы всегда будете в курсе появления новостей на сайте =)
О том, что такое RSS можно прочитать здесь.

Подписаться

Подписаться на Twitter

Я специально зарегистрировался в Твиттере, чтобы вы могли следить за обновлениями на сайте =)

Подписаться

Envato marketplace А эти люди занимаются прокатом карнавальных костюмов и масок в Минске. К слову, я им делал сайт.