Регистрация и Авторизация на PHP + MySQL

Регистрация и Авторизация на PHP + MySQL

Регистрация и Авторизация на PHP + MySQL

Доброго времени суток друзья! Давай с Вами рассмотрим регистрацию пользователей на PHP. Для начала давайте определим условия для нашей регистрации пользователей:

  • Пароль шифруем при помощи алгоритма MD5
  • Пароль будем "солить"
  • Проверка на занятость Логина
  • Активация пользователя письмом.
  • Запись и хранение данных в СУБД MySQL

Для написание данного скрипта нам нужно понять, что такое регистрация пользователя. Регистрация пользователя – это получения данных реального пользователя, обработка и хранение данных.

Если объяснять простыми словами то регистрация это всего лишь запись и хранение определенных данных по которым мы можем авторизировать пользователя в нашем случае – это Логин и Пароль.

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

Регистрация и Авторизация на PHP + MySQL Структура каталогов

Рассмотрим структуру каталогов скриптов для реализации нашей регистрации с авторизацией. Нам нужно разбить скрипты на логические составляющие. Модули регистрации и авторизации мы поместив в отдельный каталог. Так же в отдельные каталоги мы поместим подключение к базе данных MySQL, файл с пользовательскими функциями, файл стилей CSS и наш шаблон HTML. Данная структура позволяет быстро ориентироваться в скриптах. Представьте себе, что у Вас большой сайт с кучей модулями и т.д. и если не будет порядка, то будет очень сложно что-то отыскать в таком бардаке.

Так как мы будем хранить все данные в СУБД MySQL, то давайте создадим не большую таблицу в которой будем хранить данные о регистрации.

Для начала нужно создать таблицу в базе данных. Таблицу назовем bez_reg где bez – это префикс таблицы, а reg название таблицы.

Структура таблицы: bez_reg


            --
            -- Структура таблицы `bez_reg`
            --

            CREATE TABLE IF NOT EXISTS `bez_reg` (
              `id` int(11) NOT NULL AUTO_INCREMENT,
              `login` varchar(200) NOT NULL,
              `pass` varchar(32) NOT NULL,
              `salt` varchar(32) NOT NULL,
              `active_hex` varchar(32) NOT NULL,
              `status` int(1) NOT NULL,
              PRIMARY KEY (`id`)
            ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
            

Теперь создадим основные скрипты для дальнейшей работы.


                        <?php
                        /**
                        * Главный файл (переключатель)
                        * Site: http://bezramok-tlt.ru
                        * Регистрация пользователя письмом
                        */

                        //Запускаем сессию
                        session_start();

                        //Устанавливаем кодировку и вывод всех ошибок
                        header('Content-Type: text/html; charset=UTF8');
                        error_reporting(E_ALL);

                        //Включаем буферизацию содержимого
                        ob_start();

                        //Определяем переменную для переключателя
                        $mode = isset($_GET['mode'])  ? $_GET['mode'] : false;
                        $user = isset($_SESSION['user']) ? $_SESSION['user'] : false;
                        $err = array();

                        //Устанавливаем ключ защиты
                        define('BEZ_KEY', true);

                        //Подключаем конфигурационный файл
                        include './config.php';

                        //Подключаем скрипт с функциями
                        include './func/funct.php';

                        //подключаем MySQL
                        include './bd/bd.php';

                        switch($mode)
                        {
                        //Подключаем обработчик с формой регистрации
                        case 'reg':
                        include './scripts/reg/reg.php';
                        include './scripts/reg/reg_form.html';
                        break;

                        //Подключаем обработчик с формой авторизации
                        case 'auth':
                        include './scripts/auth/auth.php';
                        include './scripts/auth/auth_form.html';
                        include './scripts/auth/show.php';
                        break;

                        }

                        //Получаем данные с буфера
                        $content = ob_get_contents();
                        ob_end_clean();

                        //Подключаем наш шаблон
                        include './html/index.html';
                        ?>
                        


                            <?php
                             /**
                             * Конфигурационный файл
                             * Site: http://bezramok-tlt.ru
                             * Регистрация пользователя письмом
                             */


                             //Ключ защиты
                             if(!defined('BEZ_KEY'))
                             {
                                 header("HTTP/1.1 404 Not Found");
                                 exit(file_get_contents('./404.html'));
                             }

                             //Адрес базы данных
                             define('BEZ_DBSERVER','localhost');

                             //Логин БД
                             define('BEZ_DBUSER','');

                             //Пароль БД
                             define('BEZ_DBPASSWORD','');

                             //БД
                             define('BEZ_DATABASE','');

                             //Префикс БД
                             define('BEZ_DBPREFIX','bez_');

                             //Errors
                             define('BEZ_ERROR_CONNECT','Немогу соеденится с БД');

                             //Errors
                             define('BEZ_NO_DB_SELECT','Данная БД отсутствует на сервере');

                             //Адрес хоста сайта
                             define('BEZ_HOST','http://'. $_SERVER['HTTP_HOST'] .'/');

                             //Адрес почты от кого отправляем
                             define('BEZ_MAIL_AUTOR','Регистрация на http://bezramok-tlt.ru <no-reply@bezramok-tlt.ru>');
                             ?>
                        


                            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
                            <html>
                                <head>
                                    <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
                                <title>Ошибка 404</title>
                                </head>
                                <body>
                                    <table width="700" cellpadding="4" cellspacing="1" border="0" align="center">
                                      <tr>
                                        <td>
                                          <h1>Ошибка 404</h1>
                                        </td>
                                      </tr>
                                      <tr>
                                        <td>
                                          <h2>
                                            На странице произошла ошибка 404
                                          </h2>
                                        </td>
                                      </tr>
                                      <tr>
                                        <td>
                                          <span class="leftMenu"><a href="javascript:history.back(-1)">Вернуться</a></span>
                                        </td>
                                      </tr>
                                    </table>
                                </body>
                            </html>
                        


                            <?php
                             /**
                             * Подключение к базе данных
                             * Site: http://bezramok-tlt.ru
                             * Регистрация пользователя письмом
                             */

                             //Ключ защиты
                             if(!defined('BEZ_KEY'))
                             {
                                 header("HTTP/1.1 404 Not Found");
                                 exit(file_get_contents('./../404.html'));
                             }

                             //Соединение с БД MySQL
                             $db_connect = mysql_connect( BEZ_DBSERVER, BEZ_DBUSER, BEZ_DBPASSWORD ) or die(BEZ_ERROR_CONNECT);

                             define('BEZ_CONNECT', $db_connect);

                             mysql_select_db( BEZ_DATABASE, BEZ_CONNECT )or die(BEZ_NO_DB_SELECT);

                             //Устанавливаем кодировку UTF8
                             mysql_query ("SET NAMES utf8");
                             mysql_query ("set character_set_client='utf8'");
                             mysql_query ("set character_set_results='utf8'");
                             mysql_query ("set collation_connection='utf8_general_ci'");
                             ?>
                        


                            <!DOCTYPE html>
                            <html>
                                <head>
                                    <!-- Start META -->
                                    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
                                    <meta name="keywords" content="Регистрация пользователей PHP MySQL, Авторизация пользователей PHP MySQL" />
                                    <meta name="description" content="Регистрация пользователей PHP MySQL с активацией письмом" />
                                    <!-- TITLE -->
                                    <title>Регистрация пользователей PHP MySQL с активацией письмом</title>

                                    <!-- Start Sheets CSS -->
                                    <link href="./css/style.css" rel="stylesheet" type="text/css">
                                </head>
                                <body>
                                    <div id="wrap">
                                        <div id="menu">
                                            <div class="menu">
                                                <ul>
                                                    <li><a href="<?php echo BEZ_HOST; ?>less/reg/?mode=auth">Войти</a></li>
                                                    <li><a href="<?php echo BEZ_HOST; ?>less/reg/?mode=reg">Регистрация</a></li>
                                                </ul>
                                            </div>
                                        </div>
                                        <div style="clear:both;"></div>
                                        <div id="content">
                                            <?php echo $content; ?>
                                        </div>
                                    </div>
                                </body>
                            </html>
                        


                            <?php
                             /**
                             * Файл с пользовательскими функциями
                             * Site: http://bezramok-tlt.ru
                             * Регистрация пользователя письмом
                             */

                             //Ключ защиты
                             if(!defined('BEZ_KEY'))
                             {
                                 header("HTTP/1.1 404 Not Found");
                                 exit(file_get_contents('./../404.html'));
                             }

                             /**Функция экранирования вносимых данных
                             *@param array $data
                             */
                             function escape_str($data)
                             {
                                if(is_array($data))
                                {
                                    if(get_magic_quotes_gpc())
                                       $strip_data = array_map("stripslashes", $data);
                                       $result = array_map("mysql_real_escape_string", $strip_data);
                                       return  $result;
                                }
                                else
                                {
                                    if(get_magic_quotes_gpc())
                                       $data = stripslashes($data);
                                       $result = mysql_real_escape_string($data);
                                       return $result;
                                }
                             }

                             /**Отпровляем сообщение на почту
                             * @param string  $to
                             * @param string  $from
                             * @param string  $title
                             * @param string  $message
                             */
                             function sendMessageMail($to, $from, $title, $message)
                             {
                               //Адресат с отправителем
                               //$to = $to;
                               //$from = $from;

                               //Формируем заголовок письма
                               $subject = $title;
                               $subject = '=?utf-8?b?'. base64_encode($subject) .'?=';

                               //Формируем заголовки для почтового сервера
                               $headers = "Content-type: text/html; charset=\"utf-8\"\r\n";
                               $headers .= "From: ". $from ."\r\n";
                               $headers .= "MIME-Version: 1.0\r\n";
                               $headers .= "Date: ". date('D, d M Y h:i:s O') ."\r\n";

                               //Отправляем данные на ящик админа сайта
                               if(!mail($to, $subject, $message, $headers))
                                  return 'Ошибка отправки письма!';
                               else
                                  return true;
                             }

                              /**функция вывода ошибок
                              * @param array  $data
                              */
                             function showErrorMessage($data)
                             {
                                $err = '<ul>'."\n";

                                if(is_array($data))
                                {
                                    foreach($data as $val)
                                        $err .= '<li style="color:red;">'. $val .'</li>'."\n";
                                }
                                else
                                    $err .= '<li style="color:red;">'. $data .'</li>'."\n";

                                $err .= '</ul>'."\n";

                                return $err;
                             }

                              /**Простая обертка для запросов к MySQL
                              * @param string  $sql
                              */
                             function mysqlQuery($sql)
                             {
                                $res = mysql_query($sql);
                                /* Проверяем результат
                                Это показывает реальный запрос, посланный к MySQL, а также ошибку. Удобно при отладке.*/
                                if(!$res)
                                {
                                    $message  = 'Неверный запрос: ' . mysql_error() . "\n";
                                    $message .= 'Запрос целиком: ' . $sql;
                                    die($message);
                                }

                                return $res;
                             }

                             /**Простой генератор соли
                             * @param string  $sql
                             */
                             function salt()
                             {
                                $salt = substr(md5(uniqid()), -8);
                                return $salt;
                             }
                        

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


                            <?php
                             /**
                             * Обработчик формы регистрации
                             * Site: http://bezramok-tlt.ru
                             * Регистрация пользователя письмом
                             */

                             //Ключ защиты
                             if(!defined('BEZ_KEY'))
                             {
                                 header("HTTP/1.1 404 Not Found");
                                 exit(file_get_contents('./../../404.html'));
                             }

                             //Выводим сообщение об удачной регистрации
                             if(isset($_GET['status']) and $_GET['status'] == 'ok')
                                echo '<b>Вы успешно зарегистрировались! Пожалуйста активируйте свой аккаунт!</b>';

                             //Выводим сообщение об удачной регистрации
                             if(isset($_GET['active']) and $_GET['active'] == 'ok')
                                echo '<b>Ваш аккаунт на http://bezramok-tlt.ru успешно активирован!</b>';

                             //Производим активацию аккаунта
                             if(isset($_GET['key']))
                             {
                                //Проверяем ключ
                                $sql = 'SELECT *
                                        FROM `'. BEZ_DBPREFIX .'reg`
                                        WHERE `active_hex` = "'. escape_str($_GET['key']) .'"';
                                $res = mysqlQuery($sql);

                                if(mysql_num_rows($res) == 0)
                                    $err[] = 'Ключ активации не верен!';

                                //Проверяем наличие ошибок и выводим пользователю
                                if(count($err) > 0)
                                    echo showErrorMessage($err);
                                else
                                {
                                    //Получаем адрес пользователя
                                    $row = mysql_fetch_assoc($res);
                                    $email = $row['login'];

                                    //Активируем аккаунт пользователя
                                    $sql = 'UPDATE `'. BEZ_DBPREFIX .'reg`
                                            SET `status` = 1
                                            WHERE `login` = "'. $email .'"';
                                    $res = mysqlQuery($sql);

                                    //Отправляем письмо для активации
                                    $title = 'Ваш аккаунт на http://bezramok-tlt.ru успешно активирован';
                                    $message = 'Поздравляю Вас, Ваш аккаунт на http://bezramok-tlt.ru успешно активирован';

                                    sendMessageMail($email, BEZ_MAIL_AUTOR, $title, $message);

                                    /*Перенаправляем пользователя на
                                    нужную нам страницу*/
                                    header('Location:'. BEZ_HOST .'less/reg/?mode=reg&active=ok');
                                    exit;
                                }
                             }
                             /*Если нажата кнопка на регистрацию,
                             начинаем проверку*/
                             if(isset($_POST['submit']))
                             {
                                //Утюжим пришедшие данные
                                if(empty($_POST['email']))
                                    $err[] = 'Поле Email не может быть пустым!';
                                else
                                {
                                    if(!preg_match("/^[a-z0-9_.-]+@([a-z0-9]+\.)+[a-z]{2,6}$/i", $_POST['email']))
                                       $err[] = 'Не правильно введен E-mail'."\n";
                                }

                                if(empty($_POST['pass']))
                                    $err[] = 'Поле Пароль не может быть пустым';

                                if(empty($_POST['pass2']))
                                    $err[] = 'Поле Подтверждения пароля не может быть пустым';

                                //Проверяем наличие ошибок и выводим пользователю
                                if(count($err) > 0)
                                    echo showErrorMessage($err);
                                else
                                {
                                    /*Продолжаем проверять введеные данные
                                    Проверяем на совподение пароли*/
                                    if($_POST['pass'] != $_POST['pass2'])
                                        $err[] = 'Пароли не совподают';

                                    //Проверяем наличие ошибок и выводим пользователю
                                    if(count($err) > 0)
                                        echo showErrorMessage($err);
                                    else
                                    {
                                        /*Проверяем существует ли у нас
                                        такой пользователь в БД*/
                                        $sql = 'SELECT `login`
                                                FROM `'. BEZ_DBPREFIX .'reg`
                                                WHERE `login` = "'. escape_str($_POST['email']) .'"';
                                        $res = mysqlQuery($sql);

                                        if(mysql_num_rows($res) > 0)
                                            $err[] = 'К сожалению Логин: <b>'. $_POST['email'] .'</b> занят!';

                                        //Проверяем наличие ошибок и выводим пользователю
                                        if(count($err) > 0)
                                            echo showErrorMessage($err);
                                        else
                                        {
                                            //Получаем ХЕШ соли
                                            $salt = salt();

                                            //Солим пароль
                                            $pass = md5(md5($_POST['pass']).$salt);

                                            /*Если все хорошо, пишем данные в базу*/
                                            $sql = 'INSERT INTO `'. BEZ_DBPREFIX .'reg`
                                                    VALUES(
                                                            "",
                                                            "'. escape_str($_POST['email']) .'",
                                                            "'. $pass .'",
                                                            "'. $salt .'",
                                                            "'. md5($salt) .'",
                                                            0
                                                            )';
                                            $res = mysqlQuery($sql);

                                            //Отправляем письмо для активации
                                            $url = BEZ_HOST .'less/reg/?mode=reg&key='. md5($salt);
                                            $title = 'Регистрация на http://bezramok-tlt.ru';
                                            $message = 'Для активации Вашего акаунта пройдите по ссылке
                                            <a href="'. $url .'">'. $url .'</a>';

                                            sendMessageMail($_POST['email'], BEZ_MAIL_AUTOR, $title, $message);

                                            //Сбрасываем параметры
                                            header('Location:'. BEZ_HOST .'less/reg/?mode=reg&status=ok');
                                            exit;
                                        }
                                    }
                                }
                             }

                            ?>
                        


                            <h2>Регистрация пользователей PHP MySQL с активацией письмом</h2>
                            <form action="" method="POST">
                                <table>
                                    <tr>
                                        <td>E-mail<font color="red">*</font>:</td>
                                        <td><input type="text" size="30" name="email"></td>
                                    </tr>
                                    <tr>
                                        <td>Пароль<font color="red">*</font>:</td>
                                        <td><input type="password" size="30" maxlength="20" name="pass"></td>
                                    </tr>
                                    <tr>
                                        <td>Подтверждения пароля<font color="red">*</font>:</td>
                                        <td><input type="password" size="30" maxlength="20" name="pass2"></td>
                                    </tr>
                                    <tr>
                                        <td>&nbsp;</td>
                                        <td colspan="2"><input type="submit" value="Зарегистроваться" name="submit"></td>
                                    </tr>
                                </table>
                            </form>
                        <br>Поля со значком <font color="red">*</font> обязательны для заполнения
                        

Так как регистрация пользователей у нас готова, самое время написать авторизацию. Создадим форму для авторизации пользователей, далее напишем обработчик формы авторизации и на последок сделаем скрипт show.php который будет показывать нам авторизированны мы в системе или нет.


                            <?php
                             /**
                             * Обработчик формы авторизации
                             * Site: http://bezramok-tlt.ru
                             * Авторизация пользователя
                             */

                             //Ключ защиты
                             if(!defined('BEZ_KEY'))
                             {
                                 header("HTTP/1.1 404 Not Found");
                                 exit(file_get_contents('./../../404.html'));
                             }

                             //Если нажата кнопка то обрабатываем данные
                             if(isset($_POST['submit']))
                             {
                                if(empty($_POST['email']))
                                    $err[] = 'Не введен Логин';

                                if(empty($_POST['pass']))
                                    $err[] = 'Не введен Пароль';

                                //Проверяем наличие ошибок и выводим пользователю
                                if(count($err) > 0)
                                    echo showErrorMessage($err);
                                else
                                {
                                    /*Создаем запрос на выборку из базы
                                    данных для проверки подлиности пользователя*/
                                    $sql = 'SELECT *
                                            FROM `'. BEZ_DBPREFIX .'reg`
                                            WHERE `login` = "'. escape_str($_POST['email']) .'"
                                            AND `status` = 1';
                                    $res = mysqlQuery($sql);

                                    //Если логин совподает, проверяем пароль
                                    if(mysql_num_rows($res) > 0)
                                    {
                                        //Получаем данные из таблицы
                                        $row = mysql_fetch_assoc($res);

                                        if(md5(md5($_POST['pass']).$row['salt']) == $row['pass'])
                                        {
                                            $_SESSION['user'] = true;

                                            //Сбрасываем параметры
                                            header('Location:'. BEZ_HOST .'less/reg/?mode=auth');
                                            exit;
                                        }
                                        else
                                            echo showErrorMessage('Неверный пароль!');
                                    }
                                    else
                                        echo showErrorMessage('Логин <b>'. $_POST['email'] .'</b> не найден!');
                                }

                             }

                            ?>
                        


                            <h2>Введите свой Логин и Пароль для входа!</h2>
                            <form action="" method="POST">
                                <table>
                                    <tr>
                                        <td>E-mail:</td>
                                        <td><input type="text" size="30" name="email"></td>
                                    </tr>
                                    <tr>
                                        <td>Пароль:</td>
                                        <td><input type="password" size="30" maxlength="20" name="pass"></td>
                                    </tr>
                                    <tr>
                                        <td>&nbsp;</td>
                                        <td colspan="2"><input type="submit" value="Войти" name="submit"></td>
                                    </tr>
                                </table>
                            </form>
                        


                            <?php
                             /**
                             * Скрипт распределения ресурсов
                             * Site: http://bezramok-tlt.ru
                             * Проверяем права на чтение данных,
                             * только для зарегистрированных пользователей
                             */

                             //Ключ защиты
                             if(!defined('BEZ_KEY'))
                             {
                                 header("HTTP/1.1 404 Not Found");
                                 exit(file_get_contents('./../../404.html'));
                             }

                             //Проверяем зашел ли пользователь
                             if($user === false)
                                echo '<h3>Доступ закрыт, Вы не вошли в систему!</h3>'."\n";

                             if($user === true)
                                echo '<h3>Поздравляю, Вы вошли в систему!</h3>'."\n";
                             ?>
                        

Автор не несет ответственности за использования данных скриптов у себя на сайте. Вы можете их использовать на свой страх и риск!

Для тех у кого последняя версия PHP выкладываю данный скрипт с использованием PDO т.к. расширение MySQL устарело и было удалено из новой версии PHP. Скачать регистрация и авторизация php mysql pdo

Архив обновлен 24.02.2015г.

Внимание: Если вы используете данный скрипт на локальном сервере типа DENWER, XAMPP, то не стоит ждать писем на свой почтовый ящик. Письма лежат в заглушке sendmail. В Denwer вы их можете найти по пути Z:\tmp\!sendmail\ открыть данные файлы вы сможете в любом почтовом клиенте.

Скачать: Регистрация и Авторизация на PHP + MySQL


Теги

Поддержи проект:


...
Relax
Подтвердил регистрацию, в базе данных состояние аккаунта обновилось на активирован, но при попытке входа просто стираются поля email и пароль и выдает "Доступ закрыт, Вы не вошли в систему!" .  Где может быть ошибка?

21/05/2017 12:59:00

Администрация
Администрация

Возможно ошибка в пароле, попробуйте удалить запись из БД и зарегистрироваться заново.

21/05/2017 15:33:08

...
нетаккакулюдей
Скачал pdo вариант запустил на EasyPHP выдаёт ошибку Ошибка соединения!: SQLSTATE[HY000] [1049] Unknown database 'reg' Как исправить?

30/04/2017 13:47:39

Администрация
Администрация

Судя по ошибке у вас отсутствует сама база reg, создайте ее и импортируйте дамп базы.

01/05/2017 19:15:33

...
Autono
Здравствуйте. Спасибо за этот урок. Очень полезно! Появились вопросы: 1) У меня есть страница с информацией index.html. Я совмещаю ей с той страницей index.html, что в этом уроке. Получаю плюс 2 кнопки к тексту. Как сделать такую штуку, чтобы при нажатии кнопок весь текст пропадал, а вместо него появлялись поля с авторизацией или регистрацией? 2) Если пользователь уже авторизовался, как вместо кнопок написать его e-mail и рядом кнопку выхода? 3) Как запретить подмену url? Чтобы не было такого, что пользователь уже авторизовался, но введя /reg/?mode=auth или /reg/?mode=reg смог бы сделать ещё одну регистрацию или авторизацию. За ответы буду очень благодарен ;)

12/03/2017 14:14:37

Администрация
Администрация

1) Такой функционал можно реализовать с помощью JQuery + COOKIE, проверяем что пользователь не залогинен, для этого используем куки, если нет то выводим форму авторизации в модальном окне.

2) Если пользователь авторизовался, то используйте механизм сессий, при авторизации заносите в сессию нужную в дальнейшем вам информацию (ФИО, email, телефон и т.д.) Потом выводите эти данные в нужном месте вашего шаблона.

3) Нужно управлять логикой скрипта, делать соответствующие проверки.

13/03/2017 12:30:48

...
я заметил
Привет, админ, с 2017 годом тебя, вопрос звучит так: Как при подтверждении письма сделать сразу человека онлайном. А то получается он подтверждает, и потом ему еще надо вводить данные для входа.

09/03/2017 22:22:19

Администрация
Администрация

В файле reg.php ищи блок где происходит активация аккаунта письмом. Далее после выполнения SQL запроса устанавливай сессионную переменную для авторизации:

$_SESSION['user'] = true;

//Перенаправляем на главную страницу
header('Location:' . BEZ_HOST);
exit;

10/03/2017 12:25:24

...
zl0dey
Правка ссылок в html дала положительные результаты.. в форму регистрации попадаю... появилась новая проблема... После регистрации форма выдаёт " Вы успешно зарегистрировались! Пожалуйста активируйте свой аккаунт!" Я понимаю что с Локальной машины мне писем ждать неоткуда... но в Базу данных информация ведь должна заноситься (на видео примере это происходит просто у пользователя статус 0) у меня же 0 эмоций.. и никакой информации о регистрирующемся.. Где может быть косяк? (если бы данные к подключению к БД были некорректны то я наверно не увидел бы подтверждение регистрации + я видел скрипт который проверяет наличие пользователя в системе... он так же ругался бы) в чём проблема может быть?

03/03/2017 14:33:32

Администрация
Администрация

Сложно сказать почему так произошло, нужны логи сервера. Если хотите могу посмотреть удаленно на вашей машине через TeamViewer. Для этого пришлите свой ID и пароль мне на почту bezramok-tlt@mai.ru Я буду за компом еще минут 30.

03/03/2017 15:31:49

...
zl0dey
По ссылке http://localhost/reg/?mode=reg спокойно перехожу на форму регистрации... а вот  по header('Location: http://localhost/reg/?mode=reg&active=ok'); работать не хочет...  Залез в исходный код в окне регистрации и авторизации и нашёл вот это: <a href="http://localhost/?mode=auth">Войти</a> Как я понял Index.html не туда меня перенаправляет... сейчас буду пробовать его править...

03/03/2017 13:44:32

Администрация
Администрация

Попробуйте.

03/03/2017 15:29:16

...
zl0dey
Скачал PDO вариант, пытаюсь разобраться...  Появилась та же проблема что уже обсуждалась 13:39:35 25/01/2017г. Совет был: Укажите нужный Вам путь при ридеректе. И так не выходит: /*Перенаправляем пользователя на           нужную нам страницу*/         header('Location:'. localhost/reg .'?mode=reg&active=ok');         exit; И пытался Http адрес туда прописать... тоже не выходит...  Подскажите в каком формате путь указывать?

03/03/2017 12:52:36

Администрация
Администрация

Пути должны быть относительными. Все зависит от того где у вас размещен каталог со скриптом!

Если у вас лежит по пути http://localhost/reg/ то вы не правильно указали путь,

header('Location:'. localhost/reg .'?mode=reg&active=ok'); 
exit;

попробуйте так:

header('Location: http://localhost/reg/?mode=reg&active=ok');
exit;

03/03/2017 13:06:26

...
zl0dey
Доброго времени суток, Дёрнул меня чёрт заняться сайтостроением.. увлекательная процедура... Вот только постоянно упираюсь в Mysql вместо Mysqli а из репозитория возможность скачать была только php7 который в свою очередь Mysql не воспринимает... Так вот я заметил что ваша форма написана для php <  7ой  версии..  подскажите, много переворачивать придётся если попробовать переписать код с mysqli

03/03/2017 11:16:03

Администрация
Администрация

Добрый день. У меня здесь версия на mysql и есть с помощью PDO. Рекомендую переходить на PDO, потратьте пару дней на изучение, далее все придет само.

Вы можете скачать скрипт с использованием mysql и переписать его под mysqli. Править нужно не много, это сам коннект к БД и везде где есть запросы к базе данных.

03/03/2017 11:58:59

...
JerryWen
Щикарно! Администрация спасибо за ответы, вы все продумали! Без рофлов, огромное спасибо :)

27/02/2017 14:35:16

Администрация
Администрация

Пожалуйста )

27/02/2017 15:25:52

...
JerryWen
А все я понял, active_hex это ключ по которому мы активируем аккаунт! Только зачем его в базе то хранить? Не пойму, объясните!? Из моих предположений 1)он добавляется только после перехода по ссылке и остается в БД 2) он сразу добавляется во время регистрации и потом сравнивается с сылкой? Объясните админы зачем хранить ключ тогда?

27/02/2017 13:07:59

Администрация
Администрация

Для дальнейшего использования, например восстановления пароля!

27/02/2017 13:14:33


Copyright © 2014 - 2022 All rights reserved.