Привлечение целевого трафика, возможность получать покупателей при помощи рассылок, возврат клиента на сайт — вся эта красотища возможна в том случае, если на ваш интернет-магазин подписано как можно больше пользователей. Но для того чтобы все это заполучить, нужно постараться и сделать так, чтобы человек прошел регистрацию
. Сегодняшний материал — как раз об этом.
- Как правильно регистрироваться на сайтах
- Что такое регистрация на сайте
- Какие данные необходимы для регистрации на сайте
- Что такое авторизация и профиль на сайте\ учетная запись \ аккаунт
- Личная информация на сайтах
- Где искать кнопку регистрации на сайте
- Что делать, если есть кнопка «войти», но нет кнопки «регистрация»
- Какие преимущества дают вам зарегистрированные пользователи
- Заработок на сайтах
- Способы побудить посетителя сайта пройти регистрацию
- Дружелюбная форма — первый шаг навстречу пользователю
- После регистрации клиента нужно удержать
- Собираем готовую форму
- Какой должна быть процедура регистрации, чтобы не оттолкнуть пользователя
- Дайте пользователю выбор
- Сделайте регистрацию максимально простой
- Завуалируйте регистрацию
- Дайте человеку понять, что регистрация — это только начало
- Авторизация и аутентификация, в чем разница?
- Итог
Как правильно регистрироваться на сайтах
Мы уже писали, что такое электронная почта
и выяснили, что её основная задача — получать письма. Не только от друзей, знакомых и коллег, но и писем-подтверждений от разных сайтов для продолжения регистрации. Давайте разбираться подробнее, что это за регистрация и зачем она нужна.
Что такое регистрация на сайте
Регистрация на сайте — это передача своих данных для получения доступа ко всем возможностям сайта. Эти возможности могут быть разными:
- оставление комментариев
- доступ к файлам
- возможность покупки товаров
- подписка на конкретные темы
и многое другое!
Какие данные необходимы для регистрации на сайте
Пароль
– придуманный вами шифр, который вы будете вводить при входе на сайт. Придумывайте надежный пароль, который состоит из букв и цифр. Никогда не используйте в качестве пароля дату рождения или номер телефона. Попробуйте выбрать осмысленный пароль, который сложно забыть. Например, напишите забавное слово или фразу на английском, разбавьте символами и цифрами например, “Em-k0Lbasu”
.

Это основные поля, которые необходимо заполнить. Однако, существует и другая категория сайтов, которая действительно просит указать личную информацию, например, номер телефона или ИНН. Но об этом чуть ниже.
Что такое авторизация и профиль на сайте\ учетная запись \ аккаунт
Страница сайта с вашими данными и историей действий называется профилем\учетной записью\аккаунтом
.

Личная информация на сайтах
Вот тут тонкая грань, будьте бдительными. Есть потенциально опасные сайты, которые могут использовать информацию в своих корыстных целях, но есть и крупные сервисы с высоким рейтингом, которые используют дополнительные сведения (такие как номер телефона) для усиления защиты ваших аккаунтов. Например, yandex.ru просит указать свой номер или вконтакте.
Сначала могут полезть в голову тревожные мысли: как же так, вносить данные о себе, которые будут отображаться в интернете, мне это не нравится! Вот тут вступает в силу политика конфиденциальности, что ваши данные не будут отображаться нигде, пока вы сами этого не разрешите.
Однако помните, что у сайта должны быть веские причины, чтобы запрашивать подобную информацию. Одно дело, если это крупнейшая социальная сеть или один из ведущих почтовых сервисов, другое — когда непонятный новостной сайт просит указать номер паспорта и телефона.
Если вы доверяете сервису и знаете, что он надежен, то не стоит волноваться зря за свои данные. Ни на что вас не подпишут, денег не снимут и никто не собирается вычислять по номеру в реальной жизни.
Когда возникают сомнения, попробуйте « погуглить»
, то есть поискать в интернете, есть ли обманутые люди. Важно вводить в поисковую строку ключевые слова, например «сайт воришка.ру номер телефона обман» и уже в найденных результатах смотреть с какими проблемами сталкиваются люди.
Где искать кнопку регистрации на сайте
Стоит отметить, что не везде есть регистрация, но если такая функция существует, то чаще всего для неё будет отдельная кнопка-ссылка в шапке сайта. Типичный пример – webmoney, в верхней части логотип, меню, поиск, кнопки для регистрации (новым пользователям) и входа (для тех, кто уже регистрировался)

Что делать, если есть кнопка «войти», но нет кнопки «регистрация»

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


- регистрация нужна для получения всех «плюшек» сайтов;
- для регистрации нужно придумать уникальный логин, который еще не зарегистрирован на сайте, а так же пароль и адрес почты. Кроме тех случаев, когда вы регистрируете саму почту;
- после регистрации на сайте создается ваш персональный аккаунт или учетная запись или профиль (синонимы);
- капча – тест, который доказывает, что вы не робот, то есть можете прочитать искаженный текст;
- некоторые сайты запрашивают личную информацию, такую, как номер телефона. Нужно быть внимательным, не указывать её везде, но и не пугаться, далеко не всегда это происки мошенников;
- кнопка авторизации часто прячется в кнопке “войти”
Удачных вам регистраций!
Делитесь знаниями с друзьями!
Вероятнее всего, актуальность кода, приведенного в этой статье, на момент его прочтения читателем близка к нулю. Читатель, конечно же, скорее всего, желает изучить пример реализации регистрации и авторизации пользователей на PHP, JavaScript и MySQL, соответствующий сегодняшним техническим требованиям и требованиям безопасности. Поэтому, если читателю интересно, в целях ознакомления он может и данный материал изучить, но, скорее всего, гораздо полезнее для него будет статья, размещенная уже на сайте моего предприятия
.
Если вам необходимо сделать один из разделов своего сайта доступным ограниченному, но неопределенному кругу лиц, проще всего это сделать с помощью регистрации и авторизации пользователей. Есть множество способов авторизации пользователей. Можно использовать как инструменты веб-сервера, так и инструменты языка программирования. Мы поговорим о случае, когда используются сессии PHP
.
Вероятно, вы хотели бы увидеть более современный способ создания такой формы. Полное его современное и актуальное представление у меня пока что еще в планах, но зато вы можете увидеть, что форму обратной связи можно построить с помощью объектно-ориентированных приемов в PHP.
Для начала давайте оговорим все шаги, которые сделаем далее. Что нам вообще нужно? Нам нужен сценарий, который будет регистрировать пользователя, авторизовать пользователя, переадресовывать пользователя куда-либо после авторизации. Также нам нужно будет создать страницу, которая будет защищена от доступа неавторизованных пользователей. Для регистрации и авторизации нам необходимо будет создать HTML
-формы. Информацию о зарегистрированных пользователях мы будем хранить в базе данных. Это значит, что нам еще нужен скрипт подключения к СУБД
. Всю работу у нас будут выполнять функции, которые мы сами напишем. Эти функции мы сохраним в отдельный файл.
Итак, нам нужны следующие файлы:
- соединение с СУБД;
- пользовательские функции;
- авторизация;
- регистрация;
- защищенная страница;
- сценарий завершения работы пользователя;
- сценарий, проверяющий статус авторизации пользователя;
- таблица стилей для простейшего оформления наших страниц.
CREATE TABLE `users` ( `id` int NOT NULL AUTO_INCREMENT, `login` charNOT NULL, `password` char
NOT NULL, `reg_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Наши файлы со сценариями я назову так (все они будут лежать в одном каталоге):
- database.php;
- functions.php;
- login.php;
- registration.php;
- index.php;
- logout.php;
- checkAuth.php;
- style.css.
Назначение каждого из них, я уверен, вам понятно. Начнем со скрипта соединения с СУБД. Вы его уже видели
. Просто сохраните код этого скрипта в файле с именем database.php
. Пользовательские функции
мы будем объявлять в файле functions.php
. Как это всё будет работать? Неавторизованный пользователь пытается получить доступ к защищенному документу index.php
, система проверяет авторизован ли пользователь, если пользователь не авторизован, он переадресовывается на страницу авторизации. На странице авторизации пользователь должен видеть форму авторизации. Давайте сделаем её.
Авторизация пользователей Если вы не зарегистрированы в системе, зарегистрируйтесь
Теперь нашей форме нужно придать некий вид. Заодно определим правила для других элементов. Я, забегая вперед, приведу содержимое таблицы стилей полностью.
/* файл style.css */
.row { margin-bottom:10px; width:220px;
} .row label { display:block; font-weight:bold; } .row input.text { font-size:1.2em; padding:2px 5px; }
.to_reg { font-size:0.9em;
}
.instruction { font-size:0.8em; color:#aaaaaa; margin-left:2px; cursor:default;
}
.error { color:red; margin-left:3px;
} Если всё сделано верно, у вас в броузере должно быть следующее:

Регистрация пользователей <input type="text" class="text" name="login" id="login" value="" />В имени пользователя могут быть только символы латинского алфавита, цифры, символы '_', '-', '.'. Длина имени пользователя должна быть не короче 4 символов и не длиннее 16 символовВ пароле вы можете использовать только символы латинского алфавита, цифры, символы '_', '!', '(', ')'. Пароль должен быть не короче 6 символов и не длиннее 16 символовПовторите введенный ранее пароль
Вы, наверное, обратили внимание на то, что в HTML
-коде присутствуют переменные PHP
. Они являются содержимым атрибутов текстовых полей форм, содержимом контейнеров, предназначенных для вывода ошибок. Но мы не инициализировали эти переменные. Давайте сделаем это.
Регистрация пользователей <input type="text" class="text" name="login" id="login" value="" />В имени пользователя могут быть только символы латинского алфавита, цифры, символы '_', '-', '.'. Длина имени пользователя должна быть не короче 4 символов и не длиннее 16 символов</div> </div> <div class="row"> <label for="password">Напишите ваш пароль:</label> <input type="password" class="text" name="password" id="password" value="" /> <div class="error" id="password-error"><?=$errors['password'];?></div> <div class="instruction" id="password-instruction">В пароле вы можете использовать только символы латинского алфавита, цифры, символы '_', '!', '(', ')'. Пароль должен быть не короче 6 символов и не длиннее 16 символов</div> </div> <div class="row"> <label for="password_again">Повторите введенный пароль:</label> <input type="password" class="text" name="password_again" id="password_again" value="" /> <div class="error" id="password_again-error"><?=$errors['password_again'];?></div> <div class="instruction" id="password_again-instruction">Повторите введенный ранее пароль</div> </div> <div class="row"> <!-- Кнопка отправки данных формы --> <input type="submit" name="submit" id="btn-submit" value="Зарегистрироваться" /> <!-- Кнопка сброса полей формы к исходному состоянию --> <input type="reset" name="reset" id="btn-reset" value="Очистить" /> </div> </form> </body> </html>В атрибуте action
тега form
не указан параметр. В этом случае при отправке данных формы обрабатываться они будут в том же сценарии, из которого они и отправлялись. Значит нам нужно написать код, обрабатывающий данные формы. Но давайте сначала оговорим алгоритм их обработки.Если всё нормально, в окне вашего броузера, обратившись к документу registration.php, вы должны увидеть примерно такую форму:
/** * functions.php * Файл с пользовательскими функциями */ // Подключаем файл с параметрами подключения к СУБД require_once('database.php'); // Проверка имени пользователя function checkLogin($str) { // Инициализируем переменную с возможным сообщением об ошибке $error = ''; // Если отсутствует строка с логином, возвращаем сообщение об ошибке if(!$str) { $error = 'Вы не ввели имя пользователя'; return $error; } /** * Проверяем имя пользователя с помощью регулярных выражений * Логин должен быть не короче 4, не длиннее 16 символов * В нем должны быть символы латинского алфавита, цифры, * в нем могут быть символы '_', '-', '.' */ $pattern = '/^[-_.a-z\d]{4,16}$/i'; $result = preg_match($pattern, $str); // Если проверка не прошла, возвращаем сообщение об ошибке if(!$result) { $error = 'Недопустимые символы в имени пользователя или имя пользователя слишком короткое (длинное)'; return $error; } // Если же всё нормально, вернем значение true return true; } // Проверка пароля пользователя function checkPassword($str) { // Инициализируем переменную с возможным сообщением об ошибке $error = ''; // Если отсутствует строка с логином, возвращаем сообщение об ошибке if(!$str) { $error = 'Вы не ввели пароль'; return $error; } /** * Проверяем пароль пользователя с помощью регулярных выражений * Пароль должен быть не короче 6, не длиннее 16 символов * В нем должны быть символы латинского алфавита, цифры, * в нем могут быть символы '_', '!', '(', ')' */ $pattern = '/^[_!)(.a-z\d]{6,16}$/i'; $result = preg_match($pattern, $str); // Если проверка не прошла, возвращаем сообщение об ошибке if(!$result) { $error = 'Недопустимые символы в пароле пользователя или пароль слишком короткий (длинный)'; return $error; } // Если же всё нормально, вернем значение true return true; }<? /** * registration.php * Страница регистрации пользователей. Предполагается, что в вашей * базе данных присутствует таблица пользователей users, в которой * есть поля id, login, password, reg_date */ // Подключаем файл с пользовательскими функциями require_once('functions.php'); // Инициализируем переменные для введенных значений и возможных ошибок $errors = array(); $fields = array(); // Заранее инициализируем переменную регистрации, присваивая ей ложное значение $reg = false; // Если была нажата кнопка регистрации if(isset($_POST['submit'])) { // Делаем массив сообщений об ошибках пустым $errors['login'] = $errors['password'] = $errors['password_again'] = ''; // С помощью стандартной функции trim() удалим лишние пробелы // из введенных пользователем данных $fields['login'] = trim($_POST['login']); $password = trim($_POST['password']); $password_again = trim($_POST['password_again']); // Если логин не пройдет проверку, будет сообщение об ошибке $errors['login'] = checkLogin($fields['login']) === true ? '' : checkLogin($fields['login']); // Если пароль не пройдет проверку, будет сообщение об ошибке $errors['password'] = checkPassword($password) === true ? '' : checkPassword($password); // Если пароль введен верно, но пароли не идентичны, будет сообщение об ошибке $errors['password_again'] = (checkPassword($password) === true && $password === $password_again) ? '' : 'Введенные пароли не совпадают'; // Если ошибок нет, нам нужно добавить информацию о пользователе в БД if($errors['login'] == '' && $errors['password'] == '' && $errors['password_again'] == '') { // Вызываем функцию регистрации, её результат записываем в переменную $reg = registration($fields['login'], $password); // Если регистрация прошла успешно, сообщаем об этом пользователю // И создаем заголовок страницы, который выполнит переадресацию к форме авторизации if($reg === true) { $message = '<p>Вы успешно зарегистрировались в системе. Сейчас вы будете переадресованы к странице авторизации. Если это не произошло, перейдите на неё по <a href="login.php">прямой ссылке</a>.</p>'; header('Refresh: 5; URL = login.php'); } // Иначе сообщаем пользователю об ошибке else { $errors['full_error'] = $reg; } } } ?> <html> <head> <title>Регистрация пользователей</title> <link href="style.css" rel="stylesheet" type="text/css" /> </head> <body> <form action="" method="post"> <div class="row"> <label for="login">Укажите ваш логин:</label> <input type="text" class="text" name="login" id="login" value="<?=$fields['login'];?>" /> <div class="error" id="login-error"><?=$errors['login'];?></div> <div class="instruction" id="login-instruction">В имени пользователя могут быть только символы латинского алфавита, цифры, символы '_', '-', '.'. Длина имени пользователя должна быть не короче 4 символов и не длиннее 16 символов</div> </div> <div class="row"> <label for="password">Напишите ваш пароль:</label> <input type="password" class="text" name="password" id="password" value="" /> <div class="error" id="password-error"><?=$errors['password'];?></div> <div class="instruction" id="password-instruction">В пароле вы можете использовать только символы латинского алфавита, цифры, символы '_', '!', '(', ')'. Пароль должен быть не короче 6 символов и не длиннее 16 символов</div> </div> <div class="row"> <label for="password_again">Повторите введенный пароль:</label> <input type="password" class="text" name="password_again" id="password_again" value="" /> <div class="error" id="password_again-error"><?=$errors['password_again'];?></div> <div class="instruction" id="password_again-instruction">Повторите введенный ранее пароль</div> </div> <div class="row"> <!-- Кнопка отправки данных формы --> <input type="submit" name="submit" id="btn-submit" value="Зарегистрироваться" /> <!-- Кнопка сброса полей формы к исходному состоянию --> <input type="reset" name="reset" id="btn-reset" value="Очистить" /> </div> </form> </body> </html>В скрипте вы должны были заметить еще одну новую функцию — registration()
. А мы её еще не объявляли. Давайте сделаем это.// Функция регистрации пользователя function registration($login, $password) { // Инициализируем переменную с возможным сообщением об ошибке $error = ''; // Если отсутствует строка с логином, возвращаем сообщение об ошибке if(!$login) { $error = 'Не указан логин'; return $error; } elseif(!$password) { $error = 'Не указан пароль'; return $error; } // Проверяем не зарегистрирован ли уже пользователь // Подключаемся к СУБД connect(); // Пишем строку запроса $sql = "SELECT `id` FROM `users` WHERE `login`='" . $login . "'"; // Делаем запрос к базе $query = mysql_query($sql) or die("<p>Невозможно выполнить запрос: " . mysql_error() . ". Ошибка произошла в строке " . __LINE__ . "</p>"); // Смотрим на количество пользователей с таким логином, если есть хоть один, // возвращаем сообщение об ошибке if(mysql_num_rows($query) > 0) { $error = 'Пользователь с указанным логином уже зарегистрирован'; return $error; } // Если такого пользователя нет, регистрируем его // Пишем строку запроса $sql = "INSERT INTO `users` (`id`,`login`,`password`) VALUES (NULL, '" . $login . "','" . $password . "')"; // Делаем запрос к базе $query = mysql_query($sql) or die("<p>Невозможно добавить пользователя: " . mysql_error() . ". Ошибка произошла в строке " . __LINE__ . "</p>"); // Не забываем отключиться от СУБД mysql_close(); // Возвращаем значение true, сообщающее об успешной регистрации пользователя return true; }<? /** * Страница авторизации пользователей. Предполагается, * что в вашей базе данных присутствует таблица users, * в которой существуют поля id, login и password */ // Подлючаем файл с пользовательскими функциями require_once('functions.php'); // Заранее инициализируем переменную авторизации, присвоив ей ложное значение $auth = false; // Если была нажата кнопка авторизации if(isset($_POST['submit'])) { // Делаем массив сообщений об ошибках пустым $errors['login'] = $errors['password'] = $errors['password_again'] = ''; // С помощью стандартной функции trim() удалим лишние пробелы // из введенных пользователем данных $login = trim($_POST['login']); $password = trim($_POST['password']); // Авторизуем пользователя // Вызываем функцию регистрации, её результат записываем в переменную $auth = authorization($login, $password); // Если авторизация прошла успешно, сообщаем об этом пользователю // И создаем заголовок страницы, который выполнит переадресацию на защищенную // от общего доступа страницу if($auth === true) { $message = '<p>Вы успешно авторизовались в системе. Сейчас вы будете переадресованы на главную страницу сайта. Если это не произошло, перейдите на неё по <a href="/">прямой ссылке</a></p>'; header('Refresh: 5; URL = /'); } // Иначе сообщаем пользователю об ошибке else { $errors['full_error'] = $auth; } } ?> <html> <head> <title>Авторизация пользователей</title> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> <link href="style.css" rel="stylesheet" type="text/css" /> </head> <body> <? // Если запущен процесс авторизации, но она не была успешной, // или же авторизация еще не запущена, отображаем форму авторизации if($auth !== true) { ?> <!-- Блок для вывода сообщений об ошибках --> <div id="full_error" class="error" style="display: <? echo $errors['full_error'] ? 'inline-block' : 'none'; ?> ;"> <? // Выводим сообщение об ошибке, если оно есть echo $errors['full_error'] ? $errors['full_error'] : ''; ?> </div> <form action="" method="post"> <div class="row"> <label for="login">Ваш логин:</label> <input type="text" class="text" name="login" id="login" /> </div> <div class="row"> <label for="password">Ваш пароль:</label> <input type="password" class="text" name="password" id="password" /> </div> <div class="row"> <input type="submit" name="submit" id="btn-submit" value="Авторизоваться" /> </div> </form> <p class="to_reg">Если вы не зарегистрированы в системе, <a href="registration.php">зарегистрируйтесь</a></p> <? } // Закрывающая фигурная скобка условного оператора проверки успешной авторизации // Иначе выводим сообщение об успешной авторизации else { print $message; } /** * Если всё правильно, будет выведено сообщение об успешной авторизации, * пользователь будет переадресован на защищенную страницу */ ?> </body> </html>/** * Функция авторизации пользователя. * Авторизация пользователей у нас будет осуществляться * с помощью сессий PHP. */ function authorization($login, $password) { // Инициализируем переменную с возможным сообщением об ошибке $error = ''; // Если отсутствует строка с логином, возвращаем сообщение об ошибке if(!$login) { $error = 'Не указан логин'; return $error; } elseif(!$password) { $error = 'Не указан пароль'; return $error; } // Проверяем не зарегистрирован ли уже пользователь // Подключаемся к СУБД connect(); // Нам нужно проверить, есть ли такой пользователь среди зарегистрированных // Составляем строку запроса $sql = "SELECT `id` FROM `users` WHERE `login`='".$login."' AND `password`='".$password."'"; // Выполняем запрос $query = mysql_query($sql) or die("<p>Невозможно выполнить запрос: " . mysql_error() . ". Ошибка произошла в строке " . __LINE__ . "</p>"); // Если пользователя с такими данными нет, возвращаем сообщение об ошибке if(mysql_num_rows($query) == 0) { $error = 'Пользователь с указанными данными не зарегистрирован'; return $error; } // Если пользователь существует, запускаем сессию session_start(); // И записываем в неё логин и пароль пользователя // Для этого мы используем суперглобальный массив $_SESSION $_SESSION['login'] = $login; $_SESSION['password'] = $password; // Не забываем закрывать соединение с базой данных mysql_close(); // Возвращаем true для сообщения об успешной авторизации пользователя return true; }Когда пользователь попадает на защищенную страницу, следует проверить корректность данных о его авторизации. Для этого нам потребуется еще одна пользовательская функция. Назовем её checkAuth()
. Её задачей будет сверка данных авторизации пользователя с теми, которые хранятся в нашей базе. Если данные не совпадут, пользователь будет перенаправлен на страницу авторизации.function checkAuth($login, $password) { // Если нет логина или пароля, возвращаем false if(!$login || !$password) return false; // Проверяем зарегистрирован ли такой пользователь // Подключаемся к СУБД connect(); // Составляем строку запроса $sql = "SELECT `id` FROM `users` WHERE `login`='".$login."' AND `password`='".$password."'"; // Выполняем запрос $query = mysql_query($sql) or die("<p>Невозможно выполнить запрос: " . mysql_error() . ". Ошибка произошла в строке " . __LINE__ . "</p>"); // Если пользователя с такими данными нет, возвращаем false; if(mysql_num_rows($query) == 0) { return false; } // Не забываем закрывать соединение с базой данных mysql_close(); // Иначе возвращаем true return true; }Теперь, когда пользователь попал на защищенную страницу, мы должны вызвать функцию проверки данных авторизации. Сценарий вызова и проверки мы поместим в отдельный файл checkAuth.php и будем подключать его к тем страницам, которые будут закрытыми для общего доступа.
/** * Скрипт проверки авторизации пользователей */ // Запускаем сессию, из которой будем извлекать логин и пароль // авторизовавшихся пользователей session_start(); // Подлючаем файл с пользовательскими функциями require_once('functions.php'); /** * Чтобы определить авторизован ли пользователь, нам нужно * проверить существуют ли в базе данных записи для его логина * и пароля. Для этого воспользуемся пользовательской функцией * проверки корректности данных авторизовавшегося пользователя. * Если эта функция вернет false, значит авторизации нет. * При отсутствии авторизации мы просто переадресовываем * пользователя к странице авторизации. */ // Если в сессии присуствуют данные и о логине, и о пароле, // проверяем их if(isset($_SESSION['login']) && $_SESSION['login'] && isset($_SESSION['password']) && $_SESSION['password']) { // Если проверка существующих данных завершается неудачей if(!checkAuth($_SESSION['login'], $_SESSION['password'])) { // Переадресовываем пользователя на страницу авторизации header('location: login.php'); // Прекращаем выполнение скрипта exit; } } // Если данных либо о логине, либо о пароле пользователя нет, // считаем что авторизации нет, переадресовываем пользователя // на страницу авторизации else { header('location: login.php'); // Прекращаем выполнение сценария exit; }А теперь давайте создадим код нашей защищенной страницы. Он будет довольно-таки прост.
<? /** * Защищенная страница. К ней возможен доступ только авторизованным * пользователям. Если пользователь не авторизован, ему предлагается * авторизоваться, и доступ к сайту ограничивается. */ require_once('checkAuth.php'); ?> <html> <head> <title>Авторизация и регистрация пользователей</title> </head> <body> <h1>Успешная авторизация.</h1> <p>Вы получили доступ к защищенной странице. Вы можете <a href="logout.php">выйти</a> из системы.</p> </body> </html>Как видите, в защищенном документе мы подключаем только один файл — checkAuth.php. Все остальные файлы подключаются уже в других сценариях. Поэтому наш код не выглядит громоздким. Регистрацию и авторизацию пользователей мы организовали. Теперь необходимо позволить пользователям выходить из системы. Для этого мы создадим сценарий в файле logout.php.
/** * Скрипт выхода пользователя из системы. Так как пользователи * авторизуются через сессии, их логин и пароль хранятся * в суперглобаном массиве $_SESSION. Чтобы осуществить * выход из системы, достаточно просто уничтожить значения * массива $_SESSION['login'] и $_SESSION['password'], после * чего мы переадресовываем пользователя к странице авторизации */ // Обязательно запускаем сессию session_start(); unset($_SESSION['login']); unset($_SESSION['password']); header('location: login.php');P. S. Я в курсе, что лучше писать объектно-ориентированный код, знаю, что передавать и хранить пароль в открытом виде не стоит, что информацию, заносимую в базу данных, необходимо предварительно проверять. Знаю. Об этом я здесь не буду говорить.
Какие преимущества дают вам зарегистрированные пользователи
Регистрация на сайте — это целевое (конверсионное) действие.
Клиент, попавший в вашу базу
, априори не может быть холодным. Он находится где-то в середине воронки продаж
. А самое главное — к такому покупателю в любое время можно обратиться по доступным каналам связи. Это дает массу возможностей:
- приток целевого трафика
. Если человек пришел на сайт из рассылки, значит, предложение его заинтересовало и он с большой долей вероятности может совершить покупку;- постоянное напоминание о себе. После единичной сделки покупатель обычно забывает об интернет-магазине, где он приобрел товар. Бывает такое, что человеку очень понравилось обслуживание и качество товара и он купил бы там еще, но, хоть убей, не может вспомнить название магазина. Рассылка полностью исключает такие ситуации;
- вирусное распространение предложений. Если грамотно работать с рассылками, можно привлекать еще больше клиентов. Пример для подражания — небезызвестный сайт бронирования отелей Booking.com. Ресурс рассылает зарегистрированным пользователям предложения со ссылкой, которую можно отправить другу или знакомому. Если тот проходит по ней и совершает целевое действие — оба получают скидки или бонусы;
- статус. Сайт с большой базой зарегистрированных пользователей — это круто. Всегда можно упомянуть об этом в рекламе, соцсетях и других каналах. “ Нас уже 10 000” — это звучит гордо! На это клюют и другие клиенты, и партнеры с рекламодателями. Степень доверия и лояльность к такому ресурсу значительно повышается;
- повышение ранжирования поисковыми системами. Возможно, прямой зависимости здесь и не существует, но сама процедура регистрации сильно улучшает поведенческие факторы, которые и оценивают поисковики. Человек совершает сразу несколько целевых действий с большим количеством кликов и переходов — эти вещи как раз и отслеживают поисковые роботы.
Заработок на сайтах
Способы побудить посетителя сайта пройти регистрацию
Для того, чтобы клиент зарегистрировался на сайте, его надо заинтересовать. Мы не сторонники такого подхода, когда покупатель может что-то купить лишь после того, как зарегистрируется. Во-первых, человеку всегда нужно давать выбор. Регистрироваться или нет — это должно быть правом, а не обязанностью. Во-вторых, немалое количество интернет-пользователей, регулярно совершающих покупки в сети, принципиально ищут интернет-магазины, где можно сделать это не регистрируясь. Сделаете регистрацию обязательной — потеряете эту аудиторию.
А она, прямо скажем, немаленькая.Способ заинтересовать человека прост как мир: нужно дать понять, что это дает привилегии
. Приведем несколько рабочих примеров:1. Скидки.
Это первое что приходит на ум, и неспроста. Деньги — один из самых мощных мотиваторов в мире. Если предложить посетителю сайта пройти регистрацию в обмен на скидку — он, скорее всего, согласится. Да, вы понесете определенные маркетинговые потери, но со временем они с лихвой окупятся. Стесняться тут нечего: прямо предложите клиенту скидку
— допустим, 10 процентов на первую покупку за регистрацию.2. Бесплатные услуги.
Тоже вариация на тему “Зарегистрировался — значит сэкономил”. Только вместо скидки на этот раз выступают различные второстепенные услуги: бесплатная доставка, сборка мебели, настройка техники или установка программного обеспечения.
3. Зарегистрированный пользователь раньше других получает свежую информацию.
Нужно дать подписчику понять, что если он зарегистрируется, то первым будет оповещен о грядущих акциях
, спецпредложениях и других бонусах. Если у вас есть блог
— клиент будет получать свежие статьи на интересующие его темы.4. Бонусная программа.
Все зарегистрированные пользователи могут экономить не только при самой регистрации, но и в дальнейшем. Хороший вариант — сделать накопительную программу: чем больше покупок человек сделал в вашем магазине, тем больше у него бонусных баллов. Бонусы можно начислять не только за покупки, а, например, в день рождения, по истечении какого-то срока (вы полгода с нами — вот вам 100 баллов) и так далее.5. Полезная информация.
Это один из элементов контент-маркетинга
, только в этом случае клиент получает информацию не на сайте, а из рассылки. Можно высылать материалы о новых товарах, новостях мира моды и другой полезный контент. Главное — настроить рассылку на целевую аудиторию
: стритрейсер, заказывающий у вас элементы тюнинга авто, не должен получить новости для мамочек в декрете.6. Розыгрыши и конкурсы
.
Формат такой: “Зарегистрируйся сейчас и прими участие в розыгрыше ценного приза!”. Думаете, это уже не работает? Очень даже зря. Главное — правильно преподнести конкурс и отчитаться об итогах его проведения: разместить на сайте довольне фото победителей с призами в руках, намекнуть на следующий конкурс и так далее. В дальнейшем розыгрыши можно проводить и среди зарегистрированных участников — необязательно делать это только при первичной регистрации.
7. Сделайте платное бесплатным.
Нужно дать пользователю понять, что зарегистрировавшись, он получит преимущества перед анонимными покупателями. Например, подписчики имеют право бесплатно скачивать приложения, посещать семинары, безвозмездно получать информацию из платных подписок.Дружелюбная форма — первый шаг навстречу пользователю
Для начала мы уменьшим количество заполняемых полей до минимума, то есть запросим только те данные, которые просто необходимы для минимальной персонализации пользователя. В итоге у нас получилось всего три поля: email адрес, пароль и имя пользователя. Да, всего три, email и пароль для идентификации пользователя, а имя пользователя для его персонализации среди других пользователей.
(Примеры форм регистрации/аутентификации)
Всего три поля, уже не плохо. Но количество полей не такой страшный зверь по сравнению с двумя формами. Да, именно целых две формы содержит среднестатистический сайт, ведь уже зарегистрированным пользователям нужно ещё как-то входить на сайт. Поэтому одна форма для регистрации, а вторая — для входа (аутентификации).
Я пересмотрел десятки разных вариаций на данную тему и ни одно меня не устроило. Самые распространенные варианты были: две кнопки рядом, вход и регистрация, которые выводили две разные формы; одна большая кнопка регистрации на лендинге и маленькая кнопка входа где-то в верхнем правом углу; модальное окно с двумя переключателями/вкладками форм регистрации и входа. Больше всего мне не хотелось делать две формы, так как у такого подхода всегда будет один лишний шаг что-бы сменить одну форму на другую.
(Примеры формы регистрации/аутентификации)
После регистрации клиента нужно удержать
Есть несколько проверенных способов сделать так, чтобы через пару дней покупатель отписался от рассылки и закрыл регистрацию. Ловите вредные советы
— они помогут вам ускорить этот процесс:
- как можно больше спама. Шлите покупателю что попало: пожелания доброго утра, дня и вечера, фото котиков и прогноз погоды. И побольше, желательно несколько раз в день. Будьте уверены: после нескольких уведомлений от вас отпишутся;
- не учитывайте целевую аудиторию. Рассылайте одно и тоже всем подряд, вне зависимости от того, какие покупки совершал конкретный клиент. Отписки гарантированы;
- выберите панибратский тон рассылок и позвольте себе вольности. Обращайтесь к подписчикам на “ты”, отпускайте в письмах неуместные шуточки и сортирный юмор. Это тоже верный способ потерять подписчиков.
На этой веселой ноте мы заканчиваем нашу статью. Никогда не пользуйтесь вредными советами,
а вот все остальное внимательно изучайте и внедряйте в работу. Успехов!Возможно вам также будет интересно:
Собираем готовую форму
Один мой знакомый подсказал, что у них на сервисе (в компании в которой он работает) регистрация/аутентификация реализована следующим способом: Есть одно поле для ввода email адреса. Мы вводим свою почту, нажимаем продолжить, если такой адрес найден в базе, то открывается форма входа, если адрес не найден, то открывается форма регистрации. Такой подход избавляет пользователя от промежуточного шага выбора нужной формы, но не избавляет общий процесс регистрации/входа от двух шагов, даже с автоматическим выбором формы, что ненамного облегчает задачу.
Так же я не забыл про пользователей, которые используют для входа соц. сети и другие популярные сервисы. Под формой регистрации располагается блок с социальными кнопками для входа. И ещё одна маленькая, но важная деталь, небольшой переключатель видимости пароля, который показывает/скрывает пароль для более точного ввода.
(Итоговая форма регистрации/аутентификации)
Какой должна быть процедура регистрации, чтобы не оттолкнуть пользователя
Дайте пользователю выбор
- оформить покупку без регистрации;
- зарегистрироваться и купить товар со скидкой 10%.
Не нужно быть маркетологом, чтобы понять, что выберет среднестатистический покупатель. Откажутся от регистрации в этом случае только те, кто до сих пор видит во всем этом подвох. Но такие, как правило, не делают покупки в интернет-магазинах а приобретают товар у оффлайн-продавцов
.Сделайте регистрацию максимально простой
Допустим, вам удалось убедить пользователя пройти регистрацию на вашем сайте. Ура, вы справились! Главное теперь — не спугнуть удачу. Сделать это очень просто: если человек увидит форму во весь экран с десятком обязательных для заполнения полей
(с красными звездочками, ага), то будьте уверены: ничего заполнять он не станет
. А может быть и вообще покинет сайт, бросив корзину
и не купив то, что собирался.
Именно поэтому регистрация должна быть максимально простой и естественной
. Идеальный вариант, ставший доступен какое-то время назад — регистрация через соцсети. Здесь все просто: человеку не нужно ничего вводить или заполнять — он просто входит в личный кабинет, используя учетные данные из аккаунтов Google или “ВКонтакте”. Оставлять электронку или номер телефона неохота да и некогда, а тут вроде все происходит само собой.
Еще одна боль всех пользователей — это капча.
Использовать ее обязательно — это залог вашей безопасности. Однако капча капче рознь. Если пользователю нужно вглядываться в экран, пытаясь разгадать тайный смысл каких-то иероглифов — с третьей неудачной попытки он бросит эту затею. Делайте символы максимально читабельными и простыми
— это раздражает куда меньше. Или вообще сделайте капчу в виде картинок или пазла. Для того, чтобы отсеять роботов этого достаточно, а человеку можно всерьез облегчить жизнь, что в итоге сыграет в вашу же пользу.
Завуалируйте регистрацию
Здесь вы используете тонкий психологический момент. К самому понятию регистрации у пользователей могут быть предубеждения, мол, начнут спамить на почту, замучают своими рассылками и так далее. Толи дело вступить в ряды избранных. Каждый захочет стать тем самым избранным и с большей долей вероятности пройдет процедуру.
Дайте человеку понять, что регистрация — это только начало
И регистрируясь, он вступает на путь получения выгод и привилегий. Здесь нужно разработать комплексный подход к работе с покупателями в целом. Он должен заключаться в программы лояльности
, внедрения системы скидок и спецпредложений. Но суть остается такой: чем дольше человек с вами, тем это выгоднее для него самого
.Назовем это иерархией зарегистрированных пользователей. Вступив в ряды подписчиков и совершив первую покупку, клиент оказывается на нижней ступени лестницы и получает базовые условия. Например, условную скидку. Когда после регистрации проходит, например, год, клиент переходит на следующий уровень, где скидки больше. Для этого в течение этого года нужно совершить покупок на определенную сумму.
После нескольких лет постоянных покупок клиент получает VIP-статус с максимальными скидками и привилегиями
.
Авторизация и аутентификация, в чем разница?
Для начала давайте разберем несколько смежных понятий. Самые распространенные и наиболее часто вызывающие путаницу — «авторизация» и «аутентификация». Да, оба эти понятия связаны с взаимодействием пользователя и сервиса, но различаются тем, что «авторизация» — это процесс предоставления прав пользователю на то или иное действие, а «аутентификация» — это процесс проверки пользователя на подлинность, путем сравнения идентификаторов.
Рассмотрим на примере: допустим пользователь уже зарегистрирован на сайте, он открывает форму входа, вводит свой email адрес и пароль и нажимает на кнопку входа/отправки. Сервер принимает email и пароль, которые выступают в роли идентификатора, и ищет по ним совпадения в базе данных пользователей. Как совпадение найдено, сервер генерирует уникальный токен (ключ) и назначает его пользователю. На этом процесс аутентификации закончен, пользователь найден и подтвержден, уникальный ключ присвоен. Далее когда пользователь выполняет какое-то действие, он вместе с данными передает свой сгенерированный сервером токен (но чаще токен хранят в сессии или куках). После получения запроса от клиента, самое первое что должен сделать сервер, это проверить права данного пользователя на запрашиваемое действие. Обычно делается это через поиск пользователя по токену и получение его прав. Вот так проходит процесс авторизации. Это конечно общий пример и есть разные реализации данных методов, но общий смысл один — проверка подлинности пользователя и его прав.
Итог
По моему у нас вышла отличная форма регистрации/входа. Весь процесс занимает заполнение трех, а если пользователь уже имеет профиль, то двух полей и нажатие на одну кнопку. В следующей статье мы рассмотрим архитектуру RESTfull и её реализацию на сервисе (с точки зрения пользователя).
p.s. Социальные кнопки для входа изменят свой внешний вид и возможно поменяется набор самих сервисов.


















