На сайте можете задавать нам своими руками

Если вам необходимо сделать один из разделов своего сайта доступным ограниченному, но неопределенному кругу лиц, проще всего это сделать с помощью регистрации и авторизации пользователей. Есть множество способов авторизации пользователей. Можно использовать как инструменты веб-сервера, так и инструменты языка программирования. Мы поговорим о случае, когда используются сессии PHP.

Для начала давайте оговорим все шаги, которые сделаем далее. Что нам вообще нужно? Нам нужен сценарий, который будет регистрировать пользователя, авторизовать пользователя, переадресовывать пользователя куда-либо после авторизации. Также нам нужно будет создать страницу, которая будет защищена от доступа неавторизованных пользователей. Для регистрации и авторизации нам необходимо будет создать HTML-формы. Информацию о зарегистрированных пользователях мы будем хранить в базе данных. Это значит, что нам еще нужен скрипт подключения к СУБД. Всю работу у нас будут выполнять функции, которые мы сами напишем. Эти функции мы сохраним в отдельный файл.

Итак, нам нужны следующие файлы:

  • соединение с СУБД;
  • пользовательские функции;
  • авторизация;
  • регистрация;
  • защищенная страница;
  • сценарий завершения работы пользователя;
  • сценарий, проверяющий статус авторизации пользователя;
  • таблица стилей для простейшего оформления наших страниц.

Всё это будет бессмысленно, если у вас нет соответствующей таблицы в базе данных. Запустите инструмент управления своим СУБД (PhpMyAdmin или командную строку, как удобнее) и выполните в нем следующий запрос:

CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `login` char(16) NOT NULL, `password` char(40) NOT NULL, `reg_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Наши файлы со сценариями я назову так (все они будут лежать в одном каталоге):

  • database.php;
  • functions.php;
  • login.php;
  • registration.php;
  • index.php;
  • logout.php;
  • checkAuth.php;
  • style.css.

Назначение каждого из них, я уверен, вам понятно. Начнем со скрипта соединения с СУБД. Вы его уже видели. Просто сохраните код этого скрипта в файле с именемdatabase.php. Пользовательские функции мы будем объявлять в файлеfunctions.php. Как это всё будет работать? Неавторизованный пользователь пытается получить доступ к защищенному документуindex.php, система проверяет авторизован ли пользователь, если пользователь не авторизован, он переадресовывается на страницу авторизации. На странице авторизации пользователь должен видеть форму авторизации. Давайте сделаем её.

<html> <head> <title>Авторизация пользователей</title> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> <link href="style.css" rel="stylesheet" type="text/css" /> </head> <body> <form action="" method="post"> <div class="row"> <label for="login">Ваш логин:</label> <input type="text" class="text" name="login" id="login" /> </div> <div class="row"> <label for="password">Ваш пароль:</label> <input type="password" class="text" name="password" id="password" /> </div> <div class="row"> <input type="submit" name="submit" id="btn-submit" value="Авторизоваться" /> </div> </form> <p class="to_reg">Если вы не зарегистрированы в системе, <a href="registration.php">зарегистрируйтесь</a>.</p> </body> </html>

Теперь нашей форме нужно придать некий вид. Заодно определим правила для других элементов. Я, забегая вперед, приведу содержимое таблицы стилей полностью.

/ файл style.css /.row { margin-bottom:10px; width:220px; }.row label { display:block; font-weight:bold; }.row input.text { font-size:1.2em; padding:2px 5px; }.to_reg { font-size:0.9em; }.instruction { font-size:0.8em; color:#aaaaaa; margin-left:2px; cursor:default; }.error { color:red; margin-left:3px; }

Если всё сделано верно, у вас в броузере должно быть следующее:

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

<html> <head> <title>Регистрация пользователей</title> <link href="style.css" rel="stylesheet" type="text/css" /> </head> <body> <form action="" method="post"> <div class="row"> <label for="login">Укажите ваш логин:</label> <input type="text" class="text" name="login" id="login" value="<?=$fields['login'];?>" /> <div class="error" id="login-error"><?=$errors['login'];?></div> <div class="instruction" id="login-instruction">В имени пользователя могут быть только символы латинского алфавита, цифры, символы '_', '-', '.'. Длина имени пользователя должна быть не короче 4 символов и не длиннее 16 символов</div> </div> <div class="row"> <label for="password">Напишите ваш пароль:</label> <input type="password" class="text" name="password" id="password" value="" /> <div class="error" id="password-error"><?=$errors['password'];?></div> <div class="instruction" id="password-instruction">В пароле вы можете использовать только символы латинского алфавита, цифры, символы '_', '!', '(', ')'. Пароль должен быть не короче 6 символов и не длиннее 16 символов</div> </div> <div class="row"> <label for="password_again">Повторите введенный пароль:</label> <input type="password" class="text" name="password_again" id="password_again" value="" /> <div class="error" id="password_again-error"><?=$errors['password_again'];?></div> <div class="instruction" id="password_again-instruction">Повторите введенный ранее пароль</div> </div> <div class="row"> <!-- Кнопка отправки данных формы --> <input type="submit" name="submit" id="btn-submit" value="Зарегистрироваться" /> <!-- Кнопка сброса полей формы к исходному состоянию --> <input type="reset" name="reset" id="btn-reset" value="Очистить" /> </div> </form> </body> </html>

Вы, наверное, обратили внимание на то, что в HTML-коде присутствуют переменные PHP. Они являются содержимым атрибутов текстовых полей форм, содержимом контейнеров, предназначенных для вывода ошибок. Но мы не инициализировали эти переменные. Давайте сделаем это.

<? // Инициализируем переменные для введенных значений и возможных ошибок $errors = array(); $fields = array();?> <html> <head> <title>Регистрация пользователей</title> <link href="style.css" rel="stylesheet" type="text/css" /> </head> <body> <form action="" method="post"> <div class="row"> <label for="login">Укажите ваш логин:</label> <input type="text" class="text" name="login" id="login" value="<?=$fields['login'];?>" /> <div class="error" id="login-error"><?=$errors['login'];?></div> <div class="instruction" id="login-instruction">В имени пользователя могут быть только символы латинского алфавита, цифры, символы '_', '-', '.'. Длина имени пользователя должна быть не короче 4 символов и не длиннее 16 символов</div> </div> <div class="row"> <label for="password">Напишите ваш пароль:</label> <input type="password" class="text" name="password" id="password" value="" /> <div class="error" id="password-error"><?=$errors['password'];?></div> <div class="instruction" id="password-instruction">В пароле вы можете использовать только символы латинского алфавита, цифры, символы '_', '!', '(', ')'. Пароль должен быть не короче 6 символов и не длиннее 16 символов</div> </div> <div class="row"> <label for="password_again">Повторите введенный пароль:</label> <input type="password" class="text" name="password_again" id="password_again" value="" /> <div class="error" id="password_again-error"><?=$errors['password_again'];?></div> <div class="instruction" id="password_again-instruction">Повторите введенный ранее пароль</div> </div> <div class="row"> <!-- Кнопка отправки данных формы --> <input type="submit" name="submit" id="btn-submit" value="Зарегистрироваться" /> <!-- Кнопка сброса полей формы к исходному состоянию --> <input type="reset" name="reset" id="btn-reset" value="Очистить" /> </div> </form> </body> </html>

В атрибутеaction тегаform не указан параметр. В этом можете случае при отправке данных формы обрабатываться они будут в том же сценарии, из которого они и отправлялись. Значит нам нужно написать код, обрабатывающий данные формы. Но давайте сначала оговорим алгоритм их обработки.

Нам нужно, чтобы поля логина и пароля не были пустыми. Затем необходимо проверить логин на соответствие требованиям. Пароль также должен соответствовать описанным требованиям, а повторно указанный пароль должен с ним совпадать и, кроме того, они должны быть идентичны. Если какое-то из этих условий не выполняется, обработка данных формы должна быть прекращена, в массив сообщений об ошибке должно быть записано соответствующее оповещение, и оно должно быть отображено пользвателю. Для удобства пользователя мы сохраним введенный им логин (если он его указал), записав его значение в массив$fields.

Если всё нормально, в окне вашего броузера, обратившись к документу registration.php, вы должны увидеть примерно такую форму:

Теперь, допустим, пользователь нажал на кнопку регистрации, не заполнил поля формы. Согласно нашему алгоритму, логин и пароль не могут быть пустыми. Если это условие не выполняется, регистрация невозможно. Мы помним о том, что обработка данных формы происходит в текущем сценарии. Значит нам нужно изменить его код, добавив соответствующие проверки. Сразу же оговорим и следующие проверки. Если введены и логин, и пароль, нужно проверить их соответствие указанным требованиям. Для проверки логина и пароля мы создадим пользовательские функции в файле functions.php.

/ functions.php Файл с пользовательскими функциями / // Подключаем файл с параметрами подключения к СУБД require_once('database.php'); // Проверка имени пользователя function checkLogin($str) { // Инициализируем переменную с возможным сообщением об ошибке $error = ''; // Если отсутствует строка с логином, возвращаем сообщение об ошибке if(!$str) { $error = 'Вы не ввели имя пользователя'; return $error; } / Проверяем имя пользователя с помощью регулярных выражений Логин должен быть не короче 4, не длиннее 16 символов В нем должны быть символы латинского алфавита, цифры, в нем могут быть символы '_', '-', '.' / $pattern = '/^[-_.a-z\d]{4,16}$/i'; $result = preg_match($pattern, $str); // Если проверка не прошла, возвращаем сообщение об ошибке if(!$result) { $error = 'Недопустимые символы в имени пользователя или имя пользователя слишком короткое (длинное)'; return $error; } // Если же всё нормально, вернем значение true return true; } // Проверка пароля пользователя function checkPassword($str) { // Инициализируем переменную с возможным сообщением об ошибке $error = ''; // Если отсутствует строка с логином, возвращаем сообщение об ошибке if(!$str) { $error = 'Вы не ввели пароль'; return $error; } / Проверяем пароль пользователя с помощью регулярных выражений Пароль должен быть не короче 6, не длиннее 16 символов В нем должны быть символы латинского алфавита, цифры, в нем могут быть символы '_', '!', '(', ')' / $pattern = '/^[_!)(.a-z\d]{6,16}$/i'; $result = preg_match($pattern, $str); // Если проверка не прошла, возвращаем сообщение об ошибке if(!$result) { $error = 'Недопустимые символы в пароле пользователя или пароль слишком короткий (длинный)'; return $error; } // Если же всё нормально, вернем значение true return true; }

Теперь нам нужно изменить файл registration.php, чтобы задействовать объявленные нами функции. В сценарий мы добавим условие, проверяющее нажатие кнопки регистрации. Внутри этого условия запускается проверка логина и паролей. В случае, если какая-то из проверок завершается неудачей, мы вновь отображаем форму, и выводим сообщение об ошибке. Если ошибок нет, мы регистрируем пользователя, форму регистрации при этом уже не отображаем, сообщаем пользователю об успешной регистрации, и с помощью функцииheader() переадресовываем его к форме авторизации.

<? / registration.php Страница регистрации пользователей. Предполагается, что в вашей базе данных присутствует таблица пользователей users, в которой есть поля id, login, password, reg_date / // Подключаем файл с пользовательскими функциями require_once('functions.php'); // Инициализируем переменные для введенных значений и возможных ошибок $errors = array(); $fields = array(); // Заранее инициализируем переменную регистрации, присваивая ей ложное значение $reg = false; // Если была нажата кнопка регистрации if(isset($_POST['submit'])) { // Делаем массив сообщений об ошибках пустым $errors['login'] = $errors['password'] = $errors['password_again'] = ''; // С помощью стандартной функции trim() удалим лишние пробелы // из введенных пользователем данных $fields['login'] = trim($_POST['login']); $password = trim($_POST['password']); $password_again = trim($_POST['password_again']); // Если логин не пройдет проверку, будет сообщение об ошибке $errors['login'] = checkLogin($fields['login']) === true? '' : checkLogin($fields['login']); // Если пароль не пройдет проверку, будет сообщение об ошибке $errors['password'] = checkPassword($password) === true? '' : checkPassword($password); // Если пароль введен верно, но пароли не идентичны, будет сообщение об ошибке $errors['password_again'] = (checkPassword($password) === true && $password === $password_again)? '' : 'Введенные пароли не совпадают'; // Если ошибок нет, нам нужно добавить информацию о пользователе в БД if($errors['login'] == '' && $errors['password'] == '' && $errors['password_again'] == '') { // Вызываем функцию регистрации, её результат записываем в переменную $reg = registration($fields['login'], $password); // Если регистрация прошла успешно, сообщаем об этом пользователю // И создаем заголовок страницы, который выполнит переадресацию к форме авторизации if($reg === true) { $message = '<p>Вы успешно зарегистрировались в системе. Сейчас вы будете переадресованы к странице авторизации. Если это не произошло, перейдите на неё по <a href="login.php">прямой ссылке</a>.</p>'; header('Refresh: 5; URL = login.php'); } // Иначе сообщаем пользователю об ошибке else { $errors['full_error'] = $reg; } } }?> <html> <head> <title>Регистрация пользователей</title> <link href="style.css" rel="stylesheet" type="text/css" /> </head> <body> <form action="" method="post"> <div class="row"> <label for="login">Укажите ваш логин:</label> <input type="text" class="text" name="login" id="login" value="<?=$fields['login'];?>" /> <div class="error" id="login-error"><?=$errors['login'];?></div> <div class="instruction" id="login-instruction">В имени пользователя могут быть только символы латинского алфавита, цифры, символы '_', '-', '.'. Длина имени пользователя должна быть не короче 4 символов и не длиннее 16 символов</div> </div> <div class="row"> <label for="password">Напишите ваш пароль:</label> <input type="password" class="text" name="password" id="password" value="" /> <div class="error" id="password-error"><?=$errors['password'];?></div> <div class="instruction" id="password-instruction">В пароле вы можете использовать только символы латинского алфавита, цифры, символы '_', '!', '(', ')'. Пароль должен быть не короче 6 символов и не длиннее 16 символов</div> </div> <div class="row"> <label for="password_again">Повторите введенный пароль:</label> <input type="password" class="text" name="password_again" id="password_again" value="" /> <div class="error" id="password_again-error"><?=$errors['password_again'];?></div> <div class="instruction" id="password_again-instruction">Повторите введенный ранее пароль</div> </div> <div class="row"> <!-- Кнопка отправки данных формы --> <input type="submit" name="submit" id="btn-submit" value="Зарегистрироваться" /> <!-- Кнопка сброса полей формы к исходному состоянию --> <input type="reset" name="reset" id="btn-reset" value="Очистить" /> </div> </form> </body> </html>

В скрипте вы должны были заметить еще одну новую функцию —registration(). А мы её еще не объявляли. Давайте сделаем это.

// Функция регистрации пользователя function registration($login, $password) { // Инициализируем переменную с возможным сообщением об ошибке $error = ''; // Если отсутствует строка с логином, возвращаем сообщение об ошибке if(!$login) { $error = 'Не указан логин'; return $error; } elseif(!$password) { $error = 'Не указан пароль'; return $error; } // Проверяем не зарегистрирован ли уже пользователь // Подключаемся к СУБД connect(); // Пишем строку запроса $sql = "SELECT `id` FROM `users` WHERE `login`='". $login. "'"; // Делаем запрос к базе $query = mysql_query($sql) or die("<p>Невозможно выполнить запрос: ". mysql_error(). ". Ошибка произошла в строке ". __LINE__. "</p>"); // Смотрим на количество пользователей с таким логином, если есть хоть один, // возвращаем сообщение об ошибке if(mysql_num_rows($query) > 0) { $error = 'Пользователь с указанным логином уже зарегистрирован'; return $error; } // Если такого пользователя нет, регистрируем его // Пишем строку запроса $sql = "INSERT INTO `users` (`id`,`login`,`password`) VALUES (NULL, '". $login. "','". $password. "')"; // Делаем запрос к базе $query = mysql_query($sql) or die("<p>Невозможно добавить пользователя: ". mysql_error(). ". Ошибка произошла в строке ". __LINE__. "</p>"); // Не забываем отключиться от СУБД mysql_close(); // Возвращаем значение true, сообщающее об успешной регистрации пользователя return true; }

Если всё нормально, ваш пользователь будет зарегистрирован. Можете потестировать форму. Попробуйте зарегистрировать пользователей с одинаковыми логинами. После успешной регистрации пользователь будет перееадресован к форме авторизации. Ранее мы просто создали разметку для отображения этой формы. Так как в её атрибутеaction не указан никакой параметр, данные, отправленные формой, будут обрабатываться в этом же сценарии. Значит нам нужно написать код для обработки, и добавить его в документ login.php.

<? / Страница авторизации пользователей. Предполагается, что в вашей базе данных присутствует таблица users, в которой существуют поля id, login и password / // Подлючаем файл с пользовательскими функциями require_once('functions.php'); // Заранее инициализируем переменную авторизации, присвоив ей ложное значение $auth = false; // Если была нажата кнопка авторизации if(isset($_POST['submit'])) { // Делаем массив сообщений об ошибках пустым $errors['login'] = $errors['password'] = $errors['password_again'] = ''; // С помощью стандартной функции trim() удалим лишние пробелы // из введенных пользователем данных $login = trim($_POST['login']); $password = trim($_POST['password']); // Авторизуем пользователя // Вызываем функцию регистрации, её результат записываем в переменную $auth = authorization($login, $password); // Если авторизация прошла успешно, сообщаем об этом пользователю // И создаем заголовок страницы, который выполнит переадресацию на защищенную // от общего доступа страницу if($auth === true) { $message = '<p>Вы успешно авторизовались в системе. Сейчас вы будете переадресованы на главную страницу сайта. Если это не произошло, перейдите на неё по <a href="/">прямой&nbsp;ссылке</a>.</p>'; header('Refresh: 5; URL = /'); } // Иначе сообщаем пользователю об ошибке else { $errors['full_error'] = $auth; } }?> <html> <head> <title>Авторизация пользователей</title> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> <link href="style.css" rel="stylesheet" type="text/css" /> </head> <body> <? // Если запущен процесс авторизации, но она не была успешной, // или же авторизация еще не запущена, отображаем форму авторизации if($auth!== true) {?> <!-- Блок для вывода сообщений об ошибках --> <div id="full_error" class="error" style="display: <? echo $errors['full_error']? 'inline-block' : 'none';?> ;"> <? // Выводим сообщение об ошибке, если оно есть echo $errors['full_error']? $errors['full_error'] : '';?> </div> <form action="" method="post"> <div class="row"> <label for="login">Ваш логин:</label> <input type="text" class="text" name="login" id="login" /> </div> <div class="row"> <label for="password">Ваш пароль:</label> <input type="password" class="text" name="password" id="password" /> </div> <div class="row"> <input type="submit" name="submit" id="btn-submit" value="Авторизоваться" /> </div> </form> <p class="to_reg">Если вы не зарегистрированы в системе, <a href="registration.php">зарегистрируйтесь</a>.</p> <? } // Закрывающая фигурная скобка условного оператора проверки успешной авторизации // Иначе выводим сообщение об успешной авторизации else { print $message; } / Если всё правильно, будет выведено сообщение об успешной авторизации, пользователь будет переадресован на защищенную страницу /?> </body> </html>

Вы, наверное, заметили, что в скрипте авторизации у нас появилась ещё одна незнакомая функция —authorization(). Эта функция должна авторизовать пользователя, предварительно проверив, существует ли в базе данных зарегистрированный пользователь с таким логином и паролем. Если такой пользователь не будет найден, авторизация будет прервана, на экран будет выведено сообщение о неудаче. При успешной проверки функцияauthorization() запустит сессию, и запишет в неё значения логина и пароля пользователя, сообщит сценарию об успешности авторизации, и сценарий перенаправит пользователя на защищенную страницу ресурса.

/ Функция авторизации пользователя. Авторизация пользователей у нас будет осуществляться с помощью сессий PHP. / function authorization($login, $password) { // Инициализируем переменную с возможным сообщением об ошибке $error = ''; // Если отсутствует строка с логином, возвращаем сообщение об ошибке if(!$login) { $error = 'Не указан логин'; return $error; } elseif(!$password) { $error = 'Не указан пароль'; return $error; } // Проверяем не зарегистрирован ли уже пользователь // Подключаемся к СУБД connect(); // Нам нужно проверить, есть ли такой пользователь среди зарегистрированных // Составляем строку запроса $sql = "SELECT `id` FROM `users` WHERE `login`='".$login."' AND `password`='".$password."'"; // Выполняем запрос $query = mysql_query($sql) or die("<p>Невозможно выполнить запрос: ". mysql_error(). ". Ошибка произошла в строке ". __LINE__. "</p>"); // Если пользователя с такими данными нет, возвращаем сообщение об ошибке if(mysql_num_rows($query) == 0) { $error = 'Пользователь с указанными данными не зарегистрирован'; return $error; } // Если пользователь существует, запускаем сессию session_start(); // И записываем в неё логин и пароль пользователя // Для этого мы используем суперглобальный массив $_SESSION $_SESSION['login'] = $login; $_SESSION['password'] = $password; // Не забываем закрывать соединение с базой данных mysql_close(); // Возвращаем true для сообщения об успешной авторизации пользователя return true; }

Когда пользователь попадает на защищенную страницу, следует проверить корректность данных о его авторизации. Для этого нам потребуется еще одна пользовательская функция. Назовем еёcheckAuth(). Её задачей будет сверка данных авторизации пользователя с теми, которые хранятся в нашей базе. Если данные не совпадут, пользователь будет перенаправлен на страницу авторизации.

function checkAuth($login, $password) { // Если нет логина или пароля, возвращаем false if(!$login ||!$password) return false; // Проверяем зарегистрирован ли такой пользователь // Подключаемся к СУБД connect(); // Составляем строку запроса $sql = "SELECT `id` FROM `users` WHERE `login`='".$login."' AND `password`='".$password."'"; // Выполняем запрос $query = mysql_query($sql) or die("<p>Невозможно выполнить запрос: ". mysql_error(). ". Ошибка произошла в строке ". __LINE__. "</p>"); // Если пользователя с такими данными нет, возвращаем false; if(mysql_num_rows($query) == 0) { return false; } // Не забываем закрывать соединение с базой данных mysql_close(); // Иначе возвращаем true return true; }

Теперь, когда пользователь попал на защищенную страницу, мы должны вызвать функцию проверки данных авторизации. Сценарий вызова и проверки мы поместим в отдельный файл checkAuth.php и будем подключать его к тем страницам, которые будут закрытыми для общего доступа.

/ Скрипт проверки авторизации пользователей / // Запускаем сессию, из которой будем извлекать логин и пароль // авторизовавшихся пользователей session_start(); // Подлючаем файл с пользовательскими функциями require_once('functions.php'); / Чтобы определить авторизован ли пользователь, нам нужно проверить существуют ли в базе данных записи для его логина и пароля. Для этого воспользуемся пользовательской функцией проверки корректности данных авторизовавшегося пользователя. Если эта функция вернет false, значит авторизации нет. При отсутствии авторизации мы просто переадресовываем пользователя к странице авторизации. / // Если в сессии присуствуют данные и о логине, и о пароле, // проверяем их if(isset($_SESSION['login']) && $_SESSION['login'] && isset($_SESSION['password']) && $_SESSION['password']) { // Если проверка существующих данных завершается неудачей if(!checkAuth($_SESSION['login'], $_SESSION['password'])) { // Переадресовываем пользователя на страницу авторизации header('location: login.php'); // Прекращаем выполнение скрипта exit; } } // Если данных либо о логине, либо о пароле пользователя нет, // считаем что авторизации нет, переадресовываем пользователя // на страницу авторизации else { header('location: login.php'); // Прекращаем выполнение сценария exit; }

А теперь давайте создадим код нашей защищенной страницы. Он будет довольно-таки прост.

<? / Защищенная страница. К ней возможен доступ только авторизованным пользователям. Если пользователь не авторизован, ему предлагается авторизоваться, и доступ к сайту ограничивается. / require_once('checkAuth.php');?> <html> <head> <title>Авторизация и регистрация пользователей</title> </head> <body> <h1>Успешная авторизация.</h1> <p>Вы получили доступ к защищенной странице. Вы можете <a href="logout.php">выйти</a> из системы.</p> </body> </html>

Как видите, в защищенном документе мы подключаем только один файл — checkAuth.php. Все остальные файлы подключаются уже в других сценариях. Поэтому наш код не выглядит громоздким. Регистрацию и авторизацию пользователей мы организовали. Теперь необходимо позволить пользователям выходить из системы. Для этого мы создадим сценарий в файле logout.php.

/ Скрипт выхода пользователя из системы. Так как пользователи авторизуются через сессии, их логин и пароль хранятся в суперглобаном массиве $_SESSION. Чтобы осуществить выход из системы, достаточно просто уничтожить значения массива $_SESSION['login'] и $_SESSION['password'], после чего мы переадресовываем пользователя к странице авторизации / // Обязательно запускаем сессию session_start(); unset($_SESSION['login']); unset($_SESSION['password']); header('location: login.php');

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

P.S. Я в курсе, что лучше писать объектно-ориентированный код, знаю, что передавать и хранить пароль в открытом виде не стоит, что информацию, заносимую в базу данных, необходимо предварительно проверять. Знаю. Об этом я здесь не буду говорить.


Источник: http://takefive.spb.ru/na-sayte-mozhete-zadavat-nam/


Поделись с друзьями



Рекомендуем посмотреть ещё:


Закрыть ... [X]

100 крутых вещиц, которые можно сделать из всего, что попадется под руку - Кружева цветов стих

На сайте можете задавать нам своими руками На сайте можете задавать нам своими руками На сайте можете задавать нам своими руками На сайте можете задавать нам своими руками На сайте можете задавать нам своими руками На сайте можете задавать нам своими руками На сайте можете задавать нам своими руками На сайте можете задавать нам своими руками На сайте можете задавать нам своими руками

ШОКИРУЮЩИЕ НОВОСТИ