
Здравствуйте уважаемые читатели и подписчики сайта www.mzcoding.ru. Сегодня мы будем с вами делать форму регистрации + авторизации на PHP и MySQL.
И так давайте начинать, для начала мы с вами создадим Базу Данных чтобы нам было легче мы будем использовать phpmyadmin:
1.Откроем phpmyadmin










Первое что мы сделаем это создадим каталог с именем register в этом каталоге у нас будут 4 файла
+ каталоги js и auto
Вот так будет выглядеть примерная иерархия каталога register:
Теперь давайте создадим файл с именем registration.php
Это будет наша форма ввода данных:
<html>
<head>
<title>Регистрация</title>
<style>
#button
{
display:none;
}
</style>
<!-- Подключаем библиотеку jquery-->
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/mymootol.js"> </script>
</head>
<body>
<center><font color="navy"><h1> Пожалуйста зарегистрируйтесь!</font></h1>
<p><font color="red">Поля отмеченные * (звездочкой), обязательные для регистрации!</font></p>
<form action="register.php" method="POST">
<table border=0><tr>
<td>Введите ваше имя:</td></tr><tr>
<td><input type="text" name="name" value=""><font color="red">*</font> </td></tr>
<tr>
<td>Введите E-mail адресс:</td>
</tr>
<tr>
<td><input type="text" name="email"><font color="red">*</font></td>
</tr>
<tr>
<td>Ваш сайт:</td>
</tr>
<tr>
<td><input type="text" name="sait" value="http://"></td>
</tr><tr>
<td>Ваш пароль:</td>
</tr>
<tr>
<td><input type="password" name="pass"><font color="red">*</font></td>
</tr>
</table>
<p>Для завершения регистрации ответьте на один вопрос: <font color="red">Сколько будет 5+3?</font></p>
<input type="radio" id="link"> <b>8</b> <input type="radio"><b>9</b></a>
<br>
<label>
<input type="submit" name="button" id="button" value="Зарегистрироваться">
</label>
</form>
</body>
</html>
Сразу наверное брасаются в глаза строки:
<!-- Подключаем библиотеку jquery--> <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> <script type="text/javascript" src="js/mymootol.js"> </script>
На самом деле я объясню библиотека JQuery понадобится нам для создания Антиспам защиты..Да, да именно для той выезжающей кнопки после ответа на вопрос!
Далее мы будем писать обработчик вышеуказанной формы, делается это очень просто создаем файл register.php и помещаем в него следующий код:
<?php
//Отключим вывод системных ошибок
error_reporting(0);
//Начинаем обработку формы регистрации
//Проверяем не пусты ли наши поля
if (!$_POST['name'])
{
echo "Вы не заполнили форму имя!";
}
else
{
$name =($_POST['name']);
}
echo "<br>";
if (!$_POST['email'])
{
echo "Вы не заполнели форму E-mail";
//Предлагаем пользователю заполнить имя
echo "<input type='button' value=Вернутся к редактированию данных
onClick='history.go(-1)'>";
//Если все успешно продолжаем проверять данные
}
else
{
$email=($_POST['email']);
}
echo "<br>";
if($_POST["email"]&& !ereg("^[^@]+@([a-z\-]+\.)+[a-z]{2,4}$",$_POST["email"]))
{
echo "Введите корректный формат электронной почты";
//Предлагаем пользователю заполнить имя
echo "<input type='button' value=Вернутся к редактированию данных
onClick='history.go(-1)'>";
}
echo "<br>";
if ($_POST['sait'])
{
$sait= ($_POST['sait']);
}
echo "<br>";
if(!$_POST['pass'])
{
echo "Вы не заполнили форму Пароль";
}
else
{
$pass =($_POST['pass']);
echo "<br>";
//Подключаем конфигурационный файл
include ('config.php');
//Если все вышеописанные проверки прошли успешно, добавляем пользователя в нашу БД
$result = mysql_query("INSERT INTO user(name,email,sait,pass)
VALUES ('$name','$email','$sait','$pass')");
//Проверяем заполнились ли введенные данные в БД
if ($result == 'true')
{
//Устанавливаем кодировку СР-1251 по умолчанию
mysql_query("SET NAMES cp1251");
//Обрабатуем корректность данных
$qresult=mysql_query("INSERT INTO user (name,email,sait,pass)
VALUES
('".mysql_real_escape_string($name)."',
'".mysql_real_escape_string($email)."',
'".mysql_real_escape_string($sait)."',
'".mysql_real_escape_string($pass)."')");
//Выводим сообщение после регистрации
echo "Спасибо регистрация прошла успешно!<br><font color=red><a href=autoriz/aut.php>Нажмите</a> для продолжения.</font>";
}
else
{
echo "<b><font color=red>Извините произошла ошибка при добавлении БД!</b>";
}
}
?>
Теперь напишим конфигурационный файл для соединения с сервером и БД. Назовем его config.php
<?php
//Базовое соединение
$dbserver="localhost";
$dbname="root";
$dbpassword="";
if(mysql_connect ($dbserver,$dbname,$dbpassword));
else
{
echo "Извините имя пользователя, пароль или сервер указанны не верно!";
}
//Соединяемся с Базой Данных
if (!mysql_select_db ("register")) die ("База данных не найдена! Проверьте правильность БД");
?>
Далее создаем папочку js и первым делом загрузим в неё последнюю версию библиотеки JQuery, скачать её можно отсюда
и создаем еще один файл в этойже папке с именем mymootol.js со следующим кодом:
jQuery(function()
{
//Отображаем элемент, с которым мы будем работать (создаем обертку) и событие, на которое мы будем совершать действие
jQuery('#link').click(function()
{
//Отбираем элемент с которым мы будем совершать действие и прописываем, что именно будет с ним происходить
jQuery('#button').slideDown();
});
});
Все регистрация готова, приступим к написанию Авторизации!
<center><h1><font color="red">Авторизируйтесь пожалуста!</font></h1> <!-- Создаем Фому авторизации--> <form method="POST" action="auth.php"> <input type="text" name="email" value="Введите email"> <input type="text" name="pass" value="Введите пароль"> <br> Запомнить меня <input type="checkbox"> <input type="submit" value="Войти" >
Далее создаем файл обработчик авторизации, а так же если все успешно завершенно то выводится список всех зарегисстрированных пользователей:
auth.php
<?php
//Скрипт проверки авторизации
//Соединение с БД
include('../config.php');
//Проверяем заполнены ли поля
$email = $_POST['email'];
$pass = $_POST['pass'];
//Проверяем правильностьввода пароля
$query= "SELECT * FROM user WHERE email = '$email'";
//Проверяем пароль
$auth = mysql_query($query);
if($auth)
{
$ath = mysql_fetch_array($auth);
if($ath['pass'] != $pass)
{
echo "Вы ввели не верные данные";
}
else
{
//Если пользователь зашел верно устанавливаем Куки
//setallcookie($email['email'],$pass['pass']);
//Обновляем дату последнего входа
//settime($ath['email'], true);
//Подключаем резерв если не инклудится конфиг
//$db=mysql_connect("localhost","root","");
//mysql_select_db("first_bd",$db);
echo "<center><H1>Просмотр всех зарегистрированных</H1></h1>";
$result=mysql_query("SELECT * FROM user");
$myrow=mysql_fetch_array($result);
//Выводим всех пользователей по иду начиная с 1(первого)
do
{
printf("Пользователи: %s<br>%s<br>%s<br>%s<br>",$myrow['id'],$myrow['name'],$myrow['email'],$myrow['sait']);
}
while ($myrow =mysql_fetch_array($result));
}
}
?>
Вот и все наша аутентификация готова, вот так она будет выглядеть:
Хотелось бы узнать как все это реализовать с MD5 шифрованием..
У меня при авторизации, когда нажимаю вход пишет вот такие ошибки:
Warning: include(register/config.php) [function.include]: failed to open stream: No such file or directory in Z:\home\localhost\www\register\auth.php on line 4
Warning: include() [function.include]: Failed opening ‘register/config.php’ for inclusion (include_path=’.;/usr/local/php5/PEAR’) in Z:\home\localhost\www\register\auth.php on line 4
Warning: mysql_query() [function.mysql-query]: Access denied for user ‘ODBC’@'localhost’ (using password: NO) in Z:\home\localhost\www\register\auth.php on line 11
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in Z:\home\localhost\www\register\auth.php on line 11
Ирина вероятнее всего у вас просто неправильно стоят кавычки, точнее стоят апострофы вместо кавычек! Скачайте скрипт и замените файл!
доброго времени, подскажите, какой код надо ставить вначале страничек ,которые должны быть доступны только зарегиным пользователям
А как этот скрипт с точки зрения безопасности?
C точки зрения безопасности, я бы его не ставил на свои проекты, самая большая дыра это то что пароль не шифруется! Пост писался для ознакомительных целей. Полную Аутентификацию, полностью безопасную я напишу позже)
А как запустить этот phpMyadmin? пожалуйста очень надо))),заранее спасибо!!!
Чтобы запустить PHPMyAdmin на локальном сервере (Например Denwer) следует в браузере ввести следующий Урл:
Если же на хостинг площадке, то это зависит от панели управления хостингом. Рекомендую обратится в Службу поддержки Хостинга
спасибо за статью, все работает!