logo

Пишем свою регистрацию + авторизацию

logo

Исходники


Здравствуйте уважаемые читатели и подписчики сайта www.mzcoding.ru. Сегодня мы будем с вами делать форму регистрации + авторизации на PHP и MySQL.


Создание БД

И так давайте начинать, для начала мы с вами создадим Базу Данных чтобы нам было легче мы будем использовать phpmyadmin:
1.Откроем phpmyadmin



2.Создадим новую БД и назовем её register

3. После регистрации у вас появится следующее окно:

4.Заполняем его следующим образом:

Таким образом мы в базе данных register создали БД user в которых прописали пока пять пустых полей.
5.После нажатия кнопки пошел у нас появилась следующая таблица:

Теперь по порядку так как нам нужно както опознавать зарегистрированного человека мы в первое поле напишем id -Это будет специальный идентификатор который будет присваиваться человеку. Тип у нашего идентификатора будет цифровой (т.е целое число) 1 Человек зашел присвоили ему 1, второй зашел 2, третий присвоили 3 и так далее. Поэтому в колонке тип выбираем тип INT. Далее в длине значения мы ставим цифру 10 то есть 10 значное число, при всем уважении к вашему сайту я думаю более (1000000000)человек у вас на сайте зарегистрированно не будет, поэтому смело пишем 10 и идем далее. А далее нам в поле дополнительно выбрать пункт auto_increment это чтобы наша таблица автоматически людям идентификатор присваивала. После этого ставим переключатель на пункт первичный ключ и переходим ко второму полю.
Далее все вообще намного проще, теперь мы будем прописывать только имя поля и его длину. Второе поле у нас называется name длину ставим 40 (Не думаю что есть именна которые содержут более 40 символов. В третье поле пишем email длина 40. Четвертое поле заполняем как sait и тоже длинна 40 символов. Ну и наконец пятое поле это у нас будет пароль поэтому заполняем как pass и тоже ставим 40 символов.
В итоге у вас должно выйти вот так:

Жмем кнопку сохранить.
6.После нажатия кнопки сохранить у нас получится следующее:

Если у вас также значит вы сделали все верно.
Так ну все базу данных мы создали теперь мы её обязательно сразу экспортируем в SQL документ и сохраним к себе на компьютер.
Для этого нажимаем вкладку экспорт:

После чего у нас появляется следующее окно:

В котором мы просто нажимаем на кнопку пошел.
В результате мы увидим окно со SQL кодом, код нужно скопировать и сохранить в файле с расширением .SQL

Все База данных унас готова и зарезервированна, теперь приступим к написанию PHP Кода.

Пишем PHP код формы регистрации

Первое что мы сделаем это создадим каталог с именем register в этом каталоге у нас будут 4 файла
+ каталоги js и auto

Вот так будет выглядеть примерная иерархия каталога register:

    register>
  • config.php – Конфигурационный файл
  • registration.php – Форма регистрации
  • register.php – Обработчик формы регистрации
  • register.SQL – Собственно наша БД которую мы делали выше
    • js
  • Библиотека JQuery (последнюю врсию можно скачать с сайта ).На момент написания данного скрипта последней являлась jquery-1.4.2.min.js
  • mymootol.js – Файл нашей защиты от спама
    • auto
  • aut.php – Файл формы авторизации
  • auth.php-Обработчик нашей формы авторизации
  • Теперь давайте создадим файл с именем 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>Для завершения регистрации ответьте на один вопрос: &nbsp;&nbsp;&nbsp;&nbsp;<font color="red">Сколько будет 5+3?</font></p>
    
    <input type="radio" id="link"> <b>8</b> &nbsp;&nbsp;&nbsp;  <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();
    
    });
    });
    

    Все регистрация готова, приступим к написанию Авторизации!


    Авторизация


    Для начала мы в главной папке создадим папку autoriz, и в этой папочке создаем следующий файл aut.php. Это будет форма нашей авторизации:

    <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));
    
    }
    }
    ?>
    

    Вот и все наша аутентификация готова, вот так она будет выглядеть:

    Скачать исходники

    Google Bookmarks Digg Reddit Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru МоёМесто.ru

    Похожие материалы:

    • No Related Post

    Комментарии (9) к статье «Пишем свою регистрацию + авторизацию»

    1. hunty:

      Хотелось бы узнать как все это реализовать с MD5 шифрованием..

    2. Ирина:

      У меня при авторизации, когда нажимаю вход пишет вот такие ошибки:
      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

    3. admin:

      Ирина вероятнее всего у вас просто неправильно стоят кавычки, точнее стоят апострофы вместо кавычек! Скачайте скрипт и замените файл!

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

    5. А как этот скрипт с точки зрения безопасности?

    6. admin:

      C точки зрения безопасности, я бы его не ставил на свои проекты, самая большая дыра это то что пароль не шифруется! Пост писался для ознакомительных целей. Полную Аутентификацию, полностью безопасную я напишу позже)

    7. Федя:

      А как запустить этот phpMyadmin? пожалуйста очень надо))),заранее спасибо!!!

    8. admin:

      Чтобы запустить PHPMyAdmin на локальном сервере (Например Denwer) следует в браузере ввести следующий Урл:
      http://localhost/Tools/phpMyAdmin/
      Если же на хостинг площадке, то это зависит от панели управления хостингом. Рекомендую обратится в Службу поддержки Хостинга

    9. Сергей:

      спасибо за статью, все работает!

    Комментарии

    logo
    logo

    Каталог@MAIL.RU - каталог ресурсов интернет Rambler's Top100
    Блог для программистов· Все права защищенны © 2010 |  Связаться с автором | MzCoding.