Регистрация и Авторизация на 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 ;

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

Файл INDEX.PHP


<?php
/**
* Главный файл (переключатель)
* Site: https://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';
?>

Файл CONFIG.PHP


    <?php
     /**
     * Конфигурационный файл
     * Site: https://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>');
     ?>

Файл 404.HTML


    <!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>

Файл BD.PHP


    <?php
     /**
     * Подключение к базе данных
     * Site: https://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'");
     ?>

Файл INDEX.HTML


    <!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>

Файл FUNCT.PHP


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

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

Файл REG.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($_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;
                }
            }
        }
     }

    ?>

Файл REG_FORM.HTML


    <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 который будет показывать нам авторизированны мы в системе или нет.

Файл AUTH.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> не найден!');
        }

     }

    ?>

Файл AUTH_FORM.HTML


    <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>

Файл 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($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


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

No-name
Дамир
Здрасте, адресс хота в config.php  нужно меня где то или нет ? //Адрес хоста сайта  define('BEZ_HOST','http://'. $_SERVER['HTTP_HOST'] .'/');  //Адрес хоста сайта  define('BEZ_HOST','http://'. $_SERVER['вот тут ?'] .'/');

30/08/2016 16:46:08

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

Менять данные константы не нужно! Советую прочесть документацию по суперглобальному массиву $_SERVER http://php.net/manual/ru/reserved.variables.server.php

30/08/2016 17:00:10

No-name
Creder
Здравствуйте! Почему мне открывает каталог с файлами когда пишу <a href="<?php echo HOST; ?>/scripts/reg/?mode=reg>Регистрация</a>

20/08/2016 18:47:41

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

Доброго времени суток. Дело в том что скорей всего у Вас проблема с путями, а именно в в каталоге scripts/reg отсутствует индексный файл (index.php)

21/08/2016 13:41:56

No-name
Опять Александр
Теперь всё понятно! Огромное спасибо за готовую регистрацию и авторизацию!!!  Вот читаю код, и почти всё понятно. А если слушаю, или читаю чей-то длинный заумный монолог на эту тему, то мозги начинают закипать. Я совсем недавно приступил к изучению PHP+MySQL, но во Ваших файлах уже почти разобрался. Ещё раз огромное Вам спасибо за доступную и понятную информацию!

07/08/2016 16:22:14

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

Александр и Вам удачи в изучении!

07/08/2016 16:26:22

No-name
Опять Александр
Ага, понятно. Теперь работает! А что писать, когда будет реальный хостинг?

07/08/2016 16:05:04

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

То что выдаст вам реальный хостинг. Почитайте токовую книгу или на YouTube.com посмотрите ролики на эту тему!

07/08/2016 16:14:34

No-name
Опять Александр
Извините меня за, наверное, глупый вопрос! А что надо отредактировать в файле конфигурации, чтобы работало в Денвере? Что там нужно написать? вы только не сердитесь, пожалуйста! Я только начал учить PHP+MySQL

07/08/2016 15:43:44

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

Если у Ввс ДЕНВЕР то пользователь root пароля нет, и укажите свою БД для подключения!

07/08/2016 16:02:20

No-name
Александр
Точно! Огромное спасибо! И как это я прошляпил?!...

07/08/2016 15:27:34

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

Пожалуйста. )

07/08/2016 15:33:08

No-name
Александр
Не удаётся импортировать файл bez_base.sql в базу данных на Денвере. Почему не импортируется?  Выдаёт вот такую ошибку:  ОшибкаSQL-запрос: -- -- База данных: `c1hotel` -- -- -------------------------------------------------------- -- -- Структура таблицы `bez_reg` -- [url=http://localhost/Tools/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fcreate-table.html&token=d48e7bc0680db25d357e1c5a066ca0de]CREATE TABLE[/url] [url=http://localhost/Tools/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fcontrol-flow-functions.html%23function_if&token=d48e7bc0680db25d357e1c5a066ca0de]IF[/url] [url=http://localhost/Tools/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Flogical-operators.html%23operator_not&token=d48e7bc0680db25d357e1c5a066ca0de]NOT[/url] EXISTS `bez_reg` ( `id` [url=http://localhost/Tools/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fnumeric-types.html&token=d48e7bc0680db25d357e1c5a066ca0de]INT[/url]( 11 ) [url=http://localhost/Tools/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Flogical-operators.html%23operator_not&token=d48e7bc0680db25d357e1c5a066ca0de]NOT[/url] NULL AUTO_INCREMENT , `login` [url=http://localhost/Tools/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fstring-types.html&token=d48e7bc0680db25d357e1c5a066ca0de]VARCHAR[/url]( 200 ) [url=http://localhost/Tools/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Flogical-operators.html%23operator_not&token=d48e7bc0680db25d357e1c5a066ca0de]NOT[/url] NULL , `pass` [url=http://localhost/Tools/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fstring-types.html&token=d48e7bc0680db25d357e1c5a066ca0de]VARCHAR[/url]( 32 ) [url=http://localhost/Tools/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Flogical-operators.html%23operator_not&token=d48e7bc0680db25d357e1c5a066ca0de]NOT[/url] NULL , `salt` [url=http://localhost/Tools/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fstring-types.html&token=d48e7bc0680db25d357e1c5a066ca0de]VARCHAR[/url]( 32 ) [url=http://localhost/Tools/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Flogical-operators.html%23operator_not&token=d48e7bc0680db25d357e1c5a066ca0de]NOT[/url] NULL , `active_hex` [url=http://localhost/Tools/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fstring-types.html&token=d48e7bc0680db25d357e1c5a066ca0de]VARCHAR[/url]( 32 ) [url=http://localhost/Tools/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Flogical-operators.html%23operator_not&token=d48e7bc0680db25d357e1c5a066ca0de]NOT[/url] NULL , `status` [url=http://localhost/Tools/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fnumeric-types.html&token=d48e7bc0680db25d357e1c5a066ca0de]INT[/url]( 1 ) [url=http://localhost/Tools/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Flogical-operators.html%23operator_not&token=d48e7bc0680db25d357e1c5a066ca0de]NOT[/url] NULL , PRIMARY KEY ( `id` ) ) ENGINE [url=http://localhost/Tools/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fcomparison-operators.html%23operator_equal&token=d48e7bc0680db25d357e1c5a066ca0de]=[/url] MYISAM DEFAULT [url=http://localhost/Tools/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Finformation-functions.html%23function_charset&token=d48e7bc0680db25d357e1c5a066ca0de]CHARSET[/url] [url=http://localhost/Tools/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fcomparison-operators.html%23operator_equal&token=d48e7bc0680db25d357e1c5a066ca0de]=[/url] utf8 AUTO_INCREMENT [url=http://localhost/Tools/phpMyAdmin/url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.5%2Fen%2Fcomparison-operators.html%23operator_equal&token=d48e7bc0680db25d357e1c5a066ca0de]=[/url]11; Ответ MySQL:  #1046 - No database selected 

07/08/2016 14:59:22

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

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

07/08/2016 15:16:07

No-name
yudenisov
Добрый день! У меня не работает пример с PDO. Пробовал на следующих конфигурациях Microsoft Windows 10, Apache 2.4 или IIS 7, PHP7, MySQL 5.7, hMailServer. Сконфигурировал сервер согласно инструкции, только поместил каталог со скриптами в папку /registration/. Скрипт всё корректно отрабатывает, отсылает письмо после регистрации, но, при активации письма по ссылке, приходит сообщение: "Неверный ключ активации". Просмотрев таблицу в базе данных MySQL обнаружил, что данные не записываются в базу данных, оттого и появляется это сообщение. Что в этом случае делать? Ошибка может быть или в конфигурации PDO, или в отсутствии SSL, или, что мало вероятно, неправильной работой методов GET и POST. Все остальные пакеты (Wordpress, Joomla) работают в этой конфигурации безупречно.

05/08/2016 14:54:05

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

Если письмо приходит, то в ссылке на активацию должен быть GET параметр key в нем содержится хеш из поля active_hex, так вот, ключ в ссылке должен совпадать с полем active_hex в базе!

У одно из скачавших мой скрипт была такая ситуация, как описана у вас. Ему помогла переустановка скрипта. В вашем конкретном случае пока трудно сказать. Возможно, чтото с путями или редиректом. Может есть что в логах?

05/08/2016 15:16:30

No-name
Serega
всё установил а подтверждения на мыло не приходят

26/07/2016 23:48:15

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

Скрипты расположены на боевом хостинге или на локальной машине под Денвером?

27/07/2016 08:15:39

No-name
Алексей
В файле 404.html в 23 строке исправить - добавить закрывающий тег </a>

06/07/2016 15:47:55

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

Спасибо, поправил!

06/07/2016 16:29:30


Copyright © 2014 - 2024 All rights reserved.