Login php добавить объявление а. Создаем невероятную простую систему регистрации на PHP и MySQL
Все кто разрабатывает web сайты, рано или поздно сталкивается с такой задачей как авторизация и аутентификация пользователей , реализованная именно с помощью языка программирования, а не с помощью стандарта протокола http. Сегодня мы рассмотрим пример создания простой авторизации с использованием языка программирования PHP, а данные о пользователях будем хранить в базе MySQL.
Приведенный ниже способ является простым или как бы основой для создания нормальной авторизации, но его Вы вполне можете использовать, так как он достаточно хорошо работает, также Вы сами можете улучшить этот способ и внедрить у себя на сайте.
Данный способ основан на сессиях, но я здесь применяю и куки, для того чтобы браузер запоминал пользователя, который аутентифицировался прошлый раз, чтобы каждый раз не вводить логин, можно конечно хранить в куках и пароль, но это не безопасно, даже если он зашифрован. Для того чтобы сессия закончилась, просто закройте браузер и откройте заново.
Создание объектов в базе данных
Переходим к практике. Для начала создадим таблицу хранения данных о пользователях в базе MySQL . Я предлагаю использовать простую структуру таблицы (Вы ее, конечно, можете дополнить чем-нибудь, у меня база называется test, а таблица users ):
CREATE TABLE test.users(user_id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, user_login VARCHAR(30) NOT NULL, user_password VARCHAR(32) NOT NULL, PRIMARY KEY (user_id)) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;
И давайте сразу же добавим одну запись в эту таблицу:
Insert into test.users (user_login, user_password) values ("mylogin","202cb962ac59075b964b07152d234b70")
Итого у нас получилось:
- Логин – mylogin;
- Пароль -;
Мы пароль, конечно же, будем хранить в хешированном виде, так как хранить пароль в открытом виде, мягко сказать, не безопасно. У нас Выше хеш пароля 123, поэтому, когда будем вводить пароль в форму, мы будем забивать именно 123, а не.
Создание формы регистрации
Для того чтобы пользователь мог сам зарегистрироваться, сделайте форму, данные с которой будут посылаться на файл обработки регистрации, т.е. записываться в базу данных. Например, вот самый простой способ:
0) { $error = "Пользователь с таким логином уже есть"; } // Если нет, то добавляем нового пользователя if(!isset($error)) { $login = mysql_real_escape_string(trim(htmlspecialchars($_POST["login"]))); // Убираем пробелы и хешируем пароль $password = md5(trim($_POST["password"])); mysql_query("INSERT INTO users SET user_login="".$login."", user_password="".$password."""); echo "Вы успешно зарегистрировались с логином - ".$login; exit(); } else { // если есть такой логин, то говорим об этом echo $error; } } //по умолчанию данные будут отправляться на этот же файл print <<< html
html; ?>Кстати, при таком способе лучше всего для логина использовать латинские буквы (т.е. английские ), если хотите писать логин на русском, то придется немного корректировать код. Файл можете назвать как угодно (для теста я использовал reg.html ).
Примечание! Для тестирования я использую всего один файл, я его назвал mylogin.html (код файла ниже). Вы можете использовать в своих файлах и называть их как угодно, я здесь описываю сам процесс авторизации, поэтому применить его можно везде. Кстати, во всех файлах придется использовать функцию session_start(); для того чтобы Вы могли проверять авторизован пользователь или нет. И еще один момент, конечно же, пропишите свои настройки подключения к базе данных.
Создание формы авторизации
"."Вы авторизованы
Т.е. мы проверили сессию и можем открыть доступ к определенным данным";
} else {
$login = "";
//проверяем куку, может он уже заходил сюда
if (isset($_COOKIE["CookieMy"])){
$login = htmlspecialchars($_COOKIE["CookieMy"]);
}
//простая формочка
print <<< html
Примечание! Если вдруг у Вас отказывает работать парсер php, т.е. на экран Вам выводится сам код php, то у Вас просто на всего не включена обработка php в файлах html. Настройки делаются в файле конфигурации web сервера httpd.conf (если apache):
AddType application/x-httpd-php .php .html
В IIS в окне «Добавление сопоставления модуля» (Add Module Mapping) добавьте к *.php еще и *.html через запятую. Это если Вы делаете у себя дома на своем web сервере, а если Вы все это делаете у хостера, то Вам придется писать им и просить внести необходимые изменения, у некоторых хостеров они уже сделаны.
Код я прокомментировал, поэтому я думаю, что все должно быть понятно. Еще раз напоминаю во всех файлах, содержимое которых Вы не хотите показывать не авторизованным пользователям, необходимо писать session_start, ну и, наверное, на этом все. Если есть вопросы, задавайте в комментариях. Удачи!
Инструкция
Давайте организуем самый простой способ защиты страниц от неавторизованных посетителей. Носителем информации о том ли посетитель будут . Сессия - это аналог кук в браузере, с той только разницей, что создаются они не у нас , а на сервере. И используются они для того же, для чего и куки – для хранения разной информации о нас пока мы ходим к странице одного сайта. Когда мы закрываем браузер, то сервер уничтожает эту сессию, а при следующем нашем заходе создает новую. Этот серверный механизм мы и используем для того чтобы записывать в сессию авторизовался ли уже пользователь или нет. Читая эту информацию, когда посетитель запрашивает страницу, php-скрипт будет либо открывать доступ к запароленным страницам, либо предлагать ввести логин и пароль.
Шаг 1: Создаем страницу для ввода логина и . HTML-код формы авторизации в самом простом варианте может выглядеть так:
Сюда же (в самое начало файла) добавим php-код, который будет проверять правильность введенного посетителем логина и пароля. В его начале напишем:
session_start();
Эта команда стартует новую сессию, если ее еще не создано для этого посетителя.
Затем проверим, есть ли в сессии переменная с именем "userName" - в ней будет храниться имя, если посетитель уже был авторизован. Если такая переменная есть - перенаправим посетителя на главную страницу (index.php) и закончим выполнение этого php-скрипта:
if($_SESSION["userName"]){
}
Весь остальной код будет выполняться только если пользователь еще не ввел правильного логина и пароля. Укажем которые логин и пароль надо считать правильными:
$validName = "Я свой!";
Затем проверим - соответствуют ли отправленные из формы значения правильным. Поскольку в форме мы указали метод передачи данных POST, то и читать их следует из суперглобальной переменной $_POST:
Header("Location: index.php");
}
Здесь код в фигурных скобках {} будет выполняться при правильных значениях логина и пароля. В строке $_SESSION["userName"] = $validName; ма записываем в сессию переменную с именем "userName" содержащую логин теперь уже авторизованного . Это и будет метка о том, что доступ ему повсюду до тех пор, пока действительна его текущая сессия.
А на случай если в форму введены неправильные данные добавим соответствующее сообщение:
else echo "
Логин или пароль неверны!
";
Весь код, который надо сохранить в файл с именем login.php будет выглядеть так:
session_start();
if($_SESSION["userName"]){
Header("Location: index.php");
}
$validName = "Я свой!";
$validPass = "секретный пароль";
if($_POST["userName"] == $validName && $_POST["userPass"] == $validPass) {
$_SESSION["userName"] = $validName;
Header("Location: index.php");
else echo "
Логин или пароль неверны!
";