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

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

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




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

Марина

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

© barik

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

Mayis

Как нажимаю войти пишет

Not Found ???

© barik

Проверьте наличие всех граф в таблице MySQL

Danil

"Access denied for user 'root'@'localhost' (using password: NO)"
В чем может быть проблема? Права выданы на 777.

© barik

Вопрос ни по теме..
Попробуйте: admin 1234

Sergei

Делаю вход, вот такая ошибочка:Warning: mysql_num_rows() expects parameter 1 to be resource, object given in C:\xampp\htdocs\WoA\Index on line 63. В коде регистрация тоже. Вот код входа:
if(isset($_POST['vhod'])){
$mail = $_POST['mail'];
$password = $_POST['password'];
$sql_res = $db->query("SELECT * FROM reg WHERE mail='$mail'") 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 = $_SESSION['id'];
header("location:News"); exit;}
else{
$_SESSION['msg'] = "Неверный логин иили пароль!";}}
$_SESSION['msg'] = "Пользователь не найден!";}

© barik

На данный момент долеко от компьютера, но судя по коду, попрбуйте заменить -
$db->query(SELECT ... на mysql_qu(SELECT ...

Sergei

Я делал так сразу у меня была ошибка: "нет подключения к базе".
Базу подключал вот так:

Sergei

Мне кажется проблема в том что оно не сравнивает введённый mail и password с базой,
так как при регистрации это же условие не проходит, мне создаёт двух пользователей с одинаковым мылом и паролем.

© barik

Код правильный, за исключением пробелов -
if(mysql_num_rows($sql_res) != 0 ){ Ошибку показывает в этой строке
if(mysql_num_rows($sql_res) != 0) {

Doc

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

© barik

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


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

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



←−−−