Зарегистрироваться | Забыли пароль


Для начинающих

bottom

Уроки

bottom

Полезное

bottom

Файлы

bottom

Ссылки

bottom

Главная страница » Уроки по PHP

Активация зарегистрированных пользователей по E-mail

В этом уроке мы будем совершенствовать наш скрипт регистрации, который мы создавали с нуля и который подробно описан в уроке Создание регистрации пользователей на сайте. Для того чтобы на сайте не регистрировались все подряд кому не лень мы добавим активацию пользователей по E-mail. Сразу после регистрации на почту будет высылаться письмо с ссылкой для подтверждения, и только после перехода по ней пользователь сможет войти на сайт.
Для этого нам понадобится добавить одно поле в базу данных в таблицу users:

Пример

Это поле activation с типом int(1), которое будет принимать значения 0 – не активирован, или 1 – активирован. По умолчанию в этом поле будет 0 и после того как пользователь подтвердит по ссылке в письме что это он, оно изменит значение на 1. Для этого в файле verification.php добавим функцию отправки письма

$activ = mysql_query("SELECT id FROM users WHERE login='$login'");
$id_activ = mysql_fetch_array($activ);
$activation = md5($id_activ['id']);
$subject = "Подтверждение регистрации";
$message = "Здравствуйте! Спасибо за регистрацию на сайте www.MySite.ru\nВаш логин: ".$login."\n Для того чтобы войти в свой аккуант его нужно активировать.\n
Чтобы активировать ваш аккаунт, перейдите по ссылке:\n
http://www.MySite.ru/activation.php?login=".
$login."&act=".$activation."\n\n
С уважением, Администрация сайта www.MySite.ru"
;//содержание сообщение
mail($email, $subject, $message, "Content-type:text/plane; Charset=windows-1251\r\n");

echo "На Ваш E-mail выслано письмо с cсылкой, для активации вашего аккуанта. <a href='index.php'>Главная страница</a></p>";

В этом коде мы достали id только что зарегистрированного пользователя и зашифровав в md5 отправили в ссылке по E-mail. Теперь пользователь перейдя по этой ссылке попадает на страницу activation.php, на которой будет сравниваться генерированный id и id полученный в письме.

<?php
include("bd.php");
if(isset($_GET['act']) AND isset($_GET['login'])) {
$act = $_GET['act'];
$act = stripslashes($act);
$act = htmlspecialchars($act);

$login = $_GET['login'];
$login = stripslashes($login);
$login = htmlspecialchars($login);
}
else{
exit("Вы зашил на страницу без кода подтверждения!");
}
 
$activ = mysql_query("SELECT id FROM users WHERE login='$login'"); //извлекаем идентификатор пользователя с данным логином
$id_activ = mysql_fetch_array($activ);
$activation = md5($id_activ['id']);
if ($activation == $act) {//сравниваем полученный из url и сгенерированный код
mysql_query("UPDATE users SET activation='1' WHERE login='$login'");
echo "Ваш аккуант <strong>".$login."</strong> успешно активирован! Теперь вы можете зайти на сайт под своим логином и паролем!<br><a href='index.php'>Главная страница</a>";
}
else {
echo "Ошибка! Ваш аккуант не активирован. Обратитесь к администратору.<br><a href='index.php'>Главная страница</a>";
}
?>

Если id совпадают, то мы в поле activation ставим 1, что означает подтверждение регистрации. Отлично теперь нужно немного изменить код страницы входа, чтобы входить могли только активированные пользователи. Для этого в файле login.php исправим строку

$user = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password'");

На

$user = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password' AND activation='1'");

Автор: Евгений Бочкарев · Урок добавлен: 13 Октября 2010 в 19:05 · Просмотров: 218

Рекомендую
  • Currently 5.00/5
  • 1
  • 2
  • 3
  • 4
  • 5

Рейтинг: 5.0/5 (всего 2 голоса)

Понравился сайт? Внесите свой вклад в его развитие?
R314489888859
41001346159934




   Комментарии к уроку

12
Ваш комментарий может быть первым...
 
34
12

   Добавить комментарий


Ваше имя:


Текст комментария:

Получать уведомления по Email могут только зарегистрированные пользователи. Регистрация
Введите цифры с картинки


 
34