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

Почта 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, можете скачать вместе с исходниками и доработать согласно направлению вашего сайта.

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




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

Марина

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

© barik

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

Doc

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

© barik

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

KOS

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

© barik

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


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

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



←−−−