Php скрипт регистрации и авторизации

Давно хотелось обратить внимание пользователей на проблему регистрации и авторизации на сайте. Большая часть пользователей различных CMS до сих пор не понимают, как проходит процесс регистрации и авторизации. Это масштабная проблема для юных программистов php, поэтому давайте остановимся на ней подробнее.
Итак, что бы написать php скрипт регистрации и авторизации необходимо проделать следующее:
Воспользуемся любым текстовым документом, лучше всего, если это будет NotePad2, поскольку он идеально подходит для работы, как с html, так и с php кодом. Далее создаем два файла в корневой папке нашего сайта это: index.php и reg.php.
В файл index.php поместите следующий html код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Вход</title>
</head>
<body>
<div align="center">
<form action="" method="post" enctype="multipart/form-data">
Логин:<br /><input name="login" type="text" size="20"><br />
Пароль:<br /><input name="password" type="password" size="20"><br />
<input name="submit" type="submit" value="Войти"><br />
</form>
</div>
</body>
</html>
Комментировать тут нечего, поскольку никакого php кода тут и нет. Сохраните файл, после чего откройте reg.phpи поместите туда фрагмент этого Html кода:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Регистрация</title>
</head>
<body>
<div align="center">
<form action="" method="post" enctype="multipart/form-data">
Логин:<br /><input name="login" type="text" size="20"><br />
Пароль:<br /><input name="password" type="password" size="20"><br />
Еще раз пароль:<br /><input name="password2" type="password" size="20"><br />
E-mail:<br /><input name="email" type="text" size="20"><br /><br />
<input name="submit" type="submit" value="Зарегистрироваться"><br />
</form>
</div>
</body>
</html>
Теперь создадим таблицы в MySQL и подключимся к базе данных.
Пройдите в phpmyadmin вашего сервера и создайте новую базу данных с именем "auth_reg", после того, как с этим вы справились, создайте SQLзапрос к БД вставив следующий код:
CREATE TABLE `users` (
`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`login` VARCHAR( 255 ) NOT NULL ,
`password` VARCHAR( 255 ) NOT NULL ,
`email` VARCHAR( 255 ) NOT NULL
) ENGINE = MYISAM ;
Этот код отвечает за новых пользователей вашего сайта. Она будет постепенно расти и увеличиваться. Итак, таблица создана, но нужно подключиться к БД, сделать это очень просто. В phpmyadmin создаем файл db_connect.php, внутрь которого прописываем следующий php код:
Что бы подключить данный файл к созданным ранее index.php и reg.php прописываем в самое начало обоих файлов следующее:
<?php
$config = array(); // указываем, что переменная $config это массив
$config['server'] = "localhost"; //сервер MySQL. Обычно это localhost
$config['login'] ="root"; //пользователь MySQL
$config['passw'] = ""; //пароль от пользователя MySQL
$config['name_db'] = "auth_reg"; //название нашей БД
$connect = mysql_connect($config['server'], $config['login'], $config['passw']) or die("Error!"); // подключаемся к MySQL или, в случаи ошибки, прекращаем выполнение кода
mysql_select_db($config['name_db'], $connect) or die("Error!"); // выбираем БД или, в случаии ошибки, прекращаем выполнение кода
?>
Прописываем скрипт регистрации
В файле reg.php прикрепим контейнер с html кодом, куда будут выводиться все ошибки:
<div align="center">
И внутрь файла поместим следующий php код:
<div align="center" id="error">
<?php
//а тут уже будем писать код
?>
</div>
php скрипт регистрации, который должен в итоге получиться с комментариями:
<div align="center" id="error">
<?php
//а тут уже будем писать код
?>
</div>
php скрипт регистрации, который должен в итоге получиться с комментариями:
<?php
if(isset($_POST['submit'])){ //выполняем нижеследующий код, только если нажата кнопка
$query = mysql_query("SELECT * FROM `users` WHERE `login`='".$_POST['login']."'"); //отправляем запрос на выборку всего содержимого , где поле логин равно переменной $login
$row = mysql_num_rows($query); // считаем количество рядов результата запроса
if(empty($_POST['login'])){ //если переменная логина пуста или не существует
echo"Вы не ввели логин"; // выводим сообщение об ошибке
}elseif(!preg_match("/[-a-zA-Z0-9]{3,15}/", $_POST['login'])){ //если переменная не соответствует шаблону -a-zA-Z0-9
echo"Вы неправильно ввели логин"; // выводим сообщение об ошибке
}elseif(empty($_POST['password'])){ //если переменная логина пуста или не существует
echo"Вы не ввели пароль"; // выводим сообщение об ошибке
}elseif($row > 0){ //если переменная больше 0
echo"Такой пользователь уже существует!"; // выводим сообщение об ошибке
}elseif(!preg_match("/[-a-zA-Z0-9]{3,30}/", $_POST['password'])){ //если переменная не соответствует шаблону -a-zA-Z0-9
echo"Вы неправильно ввели пароль"; // выводим сообщение об ошибке
}elseif(empty($_POST['password2'])){ //если переменная логина пуста или не существует
echo"Вы не ввели подтверждение пароля"; // выводим сообщение об ошибке
}elseif(!preg_match("/[-a-zA-Z0-9]{3,30}/", $_POST['password2'])){ //если переменная не соответствует шаблону -a-zA-Z0-9
echo"Вы неправильно ввели подтверждение пароля"; // выводим сообщение об ошибке
}elseif($_POST['password'] != $_POST['password2']){ //если переменная пароля и переенная повтора пароля не одинаковы
echo"Вы неправильно ввели подтверждение пароля"; // выводим сообщение об ошибке
}elseif(empty($_POST['email'])){ //если переменная E-mail'a пуста
echo"Вы не ввели E-mail"; // выводим сообщение об ошибке
}elseif(!preg_match("/[-a-zA-Z0-9_]{3,20}@[-a-zA-Z0-9]{2,64}\.[a-zA-Z\.]{2,9}/", $_POST['email'])){ //регулярка на проверку правильности email
echo"Вы неправильно ввели E-mail"; // выводим сообщение об ошибке
}else{ //если же ошибок нет
$login = $_POST['login']; //присваеваем переменную
$password = md5($_POST['password']);//присваеваем переменную и кодируем её в md5 для безопасности
$email = $_POST['email'];//присваеваем переменную
$insert = mysql_query("INSERT INTO `users` (`login` ,`password` ,`email` ) VALUES ('$login', '$password', '$email')"); //выполняем запрос на добавление нового пользователя
if($insert == true){
echo "Вы успешно зарегистрированы!";
}else{
echo "Непредвиденная ошибка!";
}
}
}
?>
Разберем скрипт авторизации:
Выделим отдельный контейнер для файла index.php следующим html кодом:
<div align="center">
В него же вставим следующий php:
<div align="center" id="error">
<?php
//а тут уже будем писать код
?>
</div>
Вот что должно получиться в итоге:
<?php
if(isset($_POST['submit'])){ //выполняем нижеследующий код, только если нажата кнопка
if(empty($_POST['login'])){ //если переменная логина пуста или не существует
echo"Вы не ввели логин"; // выводим сообщение об ошибке
}elseif(!preg_match("/[-a-zA-Z0-9]{3,15}/", $_POST['login'])){ //если переменная не соответствует шаблону -a-zA-Z0-9
echo"Вы неправильно ввели логин"; // выводим сообщение об ошибке
}elseif(empty($_POST['password'])){ //если переменная логина пуста или не существует
echo"Вы не ввели пароль"; // выводим сообщение об ошибке
}elseif(!preg_match("/[-a-zA-Z0-9]{3,30}/", $_POST['password'])){ //если переменная не соответствует шаблону -a-zA-Z0-9
echo"Вы неправильно ввели пароль"; // выводим сообщение об ошибке
}else{
$login = $_POST['login']; //присваеваем переменную
$password = md5($_POST['password']);//присваеваем переменную и кодируем её в md5 для безопасности
$query = mysql_query("SELECT * FROM `users` WHERE `login`='$login' AND `password`='$password'"); //отправляем запрос на выборку всего содержимого , где поле логин равно переменной $login, а поле password равно переменной $password
$row = mysql_num_rows($query); // считаем количество рядов результата запроса
if($row > 0){ //если их больше 0
echo "Вы успешно авторизовались!"; // выводим сообщение об удачной авторизации!
}else{
echo "Неправильный логин или пароль!"; // выводим сообщение об ошибке!
}
}
}
?>
По сути, поставить любой скрипт к себе на сайт весьма не сложно. Взгляните на него изнутри, любая команда является простой и стандартной командой, достаточно просто захотеть и начать учить php. Использование такого типа скриптов заметно упрощает и ускоряет работу вашего сайта. Большая часть модулей и программ, написанных вручную лучше работает, чем профессиональные скрипты, раскиданные по всему сайту хаотично
PHP скрипт чата

Итак, в этой статье мы поговорим о PHP скрипт чата. Основная масса сайтов, расположенных в просторах....
Php скрипт мониторинга игровых серверов

Найти готовый php скрипт мониторинга игровых серверов - задача не из простых. На сегодняшний....
Скрипт мониторинга серверов на php

В этой статье мы поговорим о том, что такое скрипт мониторинга серверов на php и для чего он нужен вообще....
PHP скрипт форума

Главным преимуществом PHP является его практичность и легкость. Благодаря использованию PHP ваш сайт станет....
Скрипт обратной связи php

Практически на всех сайтах, созданных на различных CMS, существует меню обратной связи. Данное меню очень....
Как создать сайт с помощью joomla

В данной статье мы коротко опишем механизм создания сайтов на локальном хостинге. Предлагаем вам....
Вот мой совет: Сейчас в таком стиле мало кто пишет. Недостатки: Нет защиты от SQL-инъекций. Лучше и проще было написать класс user и использовать его для авторизации и регистрации