{% else-1 %}
Давно хотел написать такую статью, т.к. многие новички в изучении php не понимают, как же происходит авторизация и регистрация на сайте. Что и как, я как раз и расскажу *

Шаг 1. Пишем странички для авторизации и регистрации.
Создадим 2 файла:
index.php
reg.php
index.php будет содержать следущий код, пока что не содержащий никакого 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>




думаю, тут даже комментировать ничего не надо.
reg.php так же будет содержать пока что только чистый html:

Код 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>
Шаг 2. Создаем нужные таблицы и подключаемся к БД.

Заходим в 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 ;
В эту таблицу будут добавляться новые юзеры. Так сказать База Данных Пользователей :-)

И так, создали таблицу которая нам понадобится. Теперь организуем подключение к нашей БД.
Создаем файл db_connect.php с таким содержимым:

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!"); // выбираем БД или, в случаии ошибки, прекращаем выполнение кода
?>
Теперь подключим этот файл в index.php и reg.php, написав в самое начало
PHP код:
PHP код:
<?php include("db_connect.php");?>
Шаг 3. Пишем регистрацию.
И так, открываем reg.php. Писать код будем в специальном контейнере, т.к. ошибки будут выводится именно в нем. Поэтому, перед
Код HTML:
Код HTML:
<div align="center">
Напишем
PHP код:
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 "Непредвиденная ошибка!";
}

}

}
?>
Ура! Скрипт регистрации написан!

Шаг 4. Пишем авторизацию!

Так же, как и в регистрации, код мы будем писать в отдельном контейнере. Поэтому, перед:
Код HTML:
<div align="center">
Напишем:
PHP код:
<div align="center" id="error">
<?php
//а тут уже будем писать код
?>
</div>
Далее код, точно так же хорошо прокомментирован:

PHP код:
<?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 "Неправильный логин или пароль!"; // выводим сообщение об ошибке!
}

}

}
?>
Вот и всё:-)
0 18 0
0

Нет фото
Sinner * 0.12
• 22 мар 2014, 15:17


у меня выбивает непредвиденную ошибку

0

Нет фото
NTL * 18.08
• 12 дек 2013, 08:09


А фильтрация куда делась?