Здесь можно найти всё что Вам нужно! ⇒

Почта techsupport@web-rubik.ru

Простой скрипт регистрации и авторизации для сайта, написанный на PHP и MySQL

Автор: © barik


В наше время, уже все привыкли к регистрации на каких либо интернет ресурсах и собственно регистрацией ни кого не удивишь.
Но как она устроена?
Ведь если пользователь прошел удачную регистрацию, он даже и не вникал – как что работает! Владельцы интернет ресурсов по разным причинам устанавливают программу - авторизации и, степень её изощренности будет зависеть от количества угроз предполагаемых владельцами.

Сама программа может быть написана на различных языках Web-программирования, (кто на что горазд), но принцип везде одинаковый. Я приведу пример на языке PHP и покажу вам, как что работает.

Сам код регистрации и авторизации:


<?php // <==================================================================================================================
// ==================================================> -------------- <=====================================================
// ================================================> © Copyright barik <=====> Скрипт обработчик - Регистрация | Авторизация
// ==================================================> -------------- <=====================================================
include_once "db.php"; // =======================================================================> Подключаемся к бае-данных
header("content-type: text/html; charset=utf-8"); // ==============================================> Устанавливаем кодировку
session_start(); // ======================================================================================> Запускаем сессию
// =========================================================================================================================
if(isset($_SESSION[′id′])){header("location: /regis/index.php");} // ===============> Если авторизирован - выполняем переход
// =========================================================================================================================
// ============================================================================================================> Регистрация
if(isset($_POST[′reg_ok′])){ // ==========================================================> Если нажато - Зарегистрироваться
    if($_POST[′password′] != $_POST[′password_2′]){ // ===========================================> Если пароли не совпадают
        $_SESSION[′msg′] = "Пароли не совпали!";} // ========================================================> Выдаём ошибку
        else{ // ========================================================================================> Иначе идём дальше
            if($_POST[′name′] == ′′ || 
               $_POST[′mail′] == ′′ || 
               $_POST[′login′] == ′′ || 
               $_POST[′password′] == ′′){ // ==============================> Проверяем на заполнение [ * ] необходимых полей
                $_SESSION[′msg′] = "Поля отмеченные * обязательны для заполнения!";} // => Если не заполнены - выдаём ошибку
            else{ // ====================================================================================> Иначе идём дальше
                $mail = $_POST[′mail′]; // ========================================================> Значение формы [ mail ]
                $login = $_POST[′login′]; // =====================================================> Значение формы [ login ]
                $sql_res = mysql_query("SELECT id FROM reg WHERE login=′$login′ OR mail=′$mail′") or die(mysql_error());
                if(mysql_num_rows($sql_res) != 0 ){ // ======================> Если пользователь с такими данными существует
                    $_SESSION[′msg′] = "Пользователь с таким логином и/или почтой уже существует!";} // =====> Выдаем ошибку
                else{ // ===========================================================================> Если нет - идём дальше
                    $name = $_POST[′name′]; // ====================================================> Значение формы [ name ]
                    $mail = $_POST[′mail′]; // ====================================================> Значение формы [ mail ]
                    $login = $_POST[′login′]; // =================================================> Значение формы [ login ]
                    $password = $_POST[′password′]; // ========================================> Значение формы [ password ]
                    $telefon = $_POST[′telefon′]; // ===========================================> Значение формы [ telefon ]
                    $ip = $_SERVER[′REMOTE_ADDR′]; // ===============================================> ip адрес пользователя
                    mysql_query("INSERT INTO reg SET name=′$name′, 
                                                     mail=′$mail′, 
                                                     login=′$login′, 
                                                     password=′$password′, 
                                                     telefon=′telefon′, 
                                                     ip=′$ip′"); // ===============================> Делаем запись в таблицу
                    // ================================================================================> Определяем новый id
                    $id = mysql_insert_id();
                    $sql_res = mysql_query("SELECT * FROM reg WHERE id=$id");
                    $arr = mysql_fetch_assoc($sql_res);			
                    $_SESSION[′id′] = $arr[′id′]; // ===============================================> Сохраняем его в сессию
                    $id = $_SESSION[′id′]; // =============================================> Присваеваем id в переменную $id
                    $usr = mysql_fetch_assoc(mysql_query("SELECT * FROM reg WHERE id=$id")); // =========> Забираем значение
                    header("location: /regis/index.php"); exit;}}}} // ==================================> Выполняем переход
// =========================================================================================================> // Регистрация
// =========================================================================================================================
// ============================================================================================================> Авторизация
if(isset($_POST[′avto_ok′])){ // ======================================================================> Если нажато - Войти
    $login = $_POST[′login′]; // =================================================================> Значение формы [ login ]
    $password = $_POST[′password′]; // ========================================================> Значение формы [ password ]
    $sql_res = mysql_query("SELECT * FROM reg WHERE login=′$login′") or die(mysql_error()); // =============> Ищем в таблице
    if(mysql_num_rows($sql_res) != 0 ){ // ===============================================================> Если запись есть
        $arr = mysql_fetch_assoc($sql_res);
        if($arr[′password′] === $password){ // ==================================================> Если пароль введён верный
            $_SESSION[′id′] = $arr[′id′]; // ==============================================> Записываем значение id в сессию
            $id = $_SESSION[′id′]; // ========================================================> Присваеваем в переменную $id
            header("location: /regis/index.php"); exit;} // =============================================> Выполняем переход
        else{ // ====================================================================================================> Иначе
            $_SESSION[′msg′] = "Неверный логин и/или пароль!";}} // =====================================> Выводим сообщение
            $_SESSION[′msg′] = "Пользователь не найден!";} // ===========================================> Выводим сообщение
// =========================================================================================================> // Авторизация
// =========================================================================================================================
// =======================================================================> // Скрипт обработчик - Регистрация | Авторизация
// =========================================================================================================================
// =====================================================================================================================> ?>

Теперь не много подробней..
Для начала нам необходимо создать в нашей базе данных MySQL таблицу, в неё будут записываться данные при регистрации пользователя. Назовём её, к примеру - reg.

В моём примере таблица будет состоять из 8-ми полей:
1. id – Присвоенный номер пользователю.
2. name – Имя пользователя.
3. mail – Электронная почта пользователя.
4. login – Логин пользователя.
5. password – Пароль пользователя.
6. telefon – Телефон пользователя.
7. ip – ip адрес пользователя, с которого он проходил регистрацию.
8. date – Дата регистрации пользователя.

Создадим две PHP страницы. На одной будет проходить авторизация или регистрация, назовём её – on_off.php, а на вторую пользователь будет попадать при удачной регистрации или авторизации и назовём её – index.php.
Откроем on_off.php и в любом месте между тэгами body, установим форму и две кнопки. Одна кнопка будет открывать форму регистрации, вторая – авторизации.

В этой же директории создадим ещё два PHP файла, один с формой авторизации (authorization.php), второй – регистрации (registration.php). В один поместите HTML код авторизации, во второй регистрации.

Откроем созданную страницу on_off.php и в самом верху, перед началом HTML кода, поместим скрипт обработчик, который указан в начале статьи.
Нам осталось на той же странице on_off.php вывести сообщения об ошибках и написать условие вызова форм регистрации или авторизации.

Для этого, в то место где будут выводиться сообщения об ошибках, поместим условие вывода сообщений.
<?php if(isset($_SESSION[′msg′])){echo $_SESSION[′msg′]; unset ($_SESSION[′msg′]);} ?>

А в то место, где будут выводиться формы регистрации или авторизации, поместим условие их вывода.
<?php
if(isset($_POST[′avt′])){include "authorization.php";}
if(isset($_POST[′reg′])){include "registration.php";}
else{include "baner.php";}
?>



При попадании с других страниц на on_off.php, для неавторизированных посетителей, будет выводиться сообщение, которое будет храниться в файле baner.php.
Страницу пользователя – index.php, можете скачать вместе с исходниками и доработать согласно направлению вашего сайта.

На этом у меня всё! Если что-то не понятно – пишите в комментариях...

Понравился материал 626



16 Комментарии КОТОРЫЕ

Марина

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

© barik

Марин, в исходниках не сайт, а простой пример как осуществить регистрацию - авторизацию на сайте!
Если у Вас уже есть сайт, и вы хотите, предположим, добавить личную страницу, то вам необходима регистрация, выше пример как что работает. Вы уже вкручивайте скаченные исходники в ваши страницы, дорабатывайте код согласно направлению и дизайну Вашего сайта, и тогда обязательно всё получится!
Если что, регистрируйтесь и пишите мне на почту ; )

Doc

Здравствуйте. Я хотел спросить у вас, У меня есть сайт однако, что бы его закончить нужно сделать вставить туда форму регистрации, но я уже несколько раз пробовал и ничего не получается. Так вотЮ вопрос в следующем, куда нужно вписать ваш код при готовом файле index?

© barik

Предпаложим у Вас на каждой странице есть кнопка "Авторизация", при нажатии на которую пользователь поподает на страницу index
В самое начало HTML кода нужно вставить скрипт обработчик, в любое место формы отправки значений. Вот только после удачной регистрации или авторизации пользователь бедет попадать на другую страницу, страницу пользователя. Во всяком случае в этом примере ;)

KOS

Форма регистрации передает в базу пустые значения.
Второй раз регаться не дает - "такой пользователь уже существует" с любым логином.
Войти тоже не дает.
Зато дает вход после первой регистрации с логином и паролем 0 - 0 соответственно.

© barik

Странно как то описываете проблему.. Перед заливкой исходников сам лично все проверял, все работает отлично!

Geno

В файле reg.sql название таблицы стоит "test", нужно изменить на свою.

Пркыф

Ошибка:
No database selected

Чё делать?!

© barik

При архивировании не правильно сжались форматы, переписал файлы в Adobe Dreamweaver CS4 и всё работает отлично! Перепроверил залитый архив, всё отлично! В исходниках скрипт обработчик закинул в файл handler, для удобства подключения через jQuery ;)

Iburer

Как добавить шифрования md5?

© barik

Легко:
$password = md5(sha1($_POST['password']."key"));

Только при авторизации шифруйте так же введённый пароль, а уже потом сверяйте в базе!

Pavel

Добрый день. Спасибо за скрипт регистрации и авторизации.
При нажатии на кнопку "Выход" вылезает вот это безобразие (хотя регистрация и авторизация происходит успешно):
Object not found!
The requested URL was not found on this server. The link on the referring page seems to be wrong or outdated. Pleaserm the author of that page about the error.

If you think this is a server error, please contact the webmaster.

Error 404
localhost
Apache

© barik

Скрипт полностью рабочий и без ошибок! Посмотрите наличие всех необходимых страниц у себя. В ошибке говорится о том, что не хватает страницы, на которую должны попасть после нажатия на копку СТОП..

Дарья

Спасибо большое за скрипт! Это именно то, что мне сейчас нужно.
Правда, ошибки, о которых говорили выше (Pavel и Kos) у меня тоже имеются. Но я это самостоятельно подправлю, не проблема :)

Дарья

Кстати, отдельный лайк за подробные комментарии в коде! Очень помогает учиться таким как чайникам как я~~

© barik

Уважаемые программисты, если выводит ошибки - ищите проблемы у себя: имена и наличие всех полей в таблице, наличие всех php файлов. После каждого комментария загружаю папку с файлами к себе и ни каких ошибок нет. Позже запишу видио по этой теме на канале "web-rubik"


Оставить комментарий

Оставленные комментарии проверяются технической частью интернет портала Web-rubik.ru



←−−−