Задание.
1. Создать форму регистрации пользователя.
2. Сделать проверку в базе данных существует ли пользователь с таким логином.
3. Если существует предложить перейти на форму входа на сайт или сменить пароль.
4. Если пользователь не существует, то добавить его в базу данных.
5. Создать форму входа на сайт.
6. Создать форму смены пароля.
7. Создать страницу подтверждения емайла.
1. Для этого создадим файл registration.php в нем будет хранится наша форма для регистрации. В результате получим такой код:
<html> <head> <meta charset='utf-8'> <title>My First PHP Page</title> </head> <body> <form action="proverka.php" method="POST"> // страница обработчик <table> <tr> <td>Пароль<font color="red">*</font>:</td> <td><input type="password" size="20" maxlength="20" name="password"></td> </tr> <tr> <td>Подтверждения пароля<font color="red">*</font>:</td> <td><input type="password" size="20" maxlength="20" name="password2"></td> </tr> <tr> <td>E-mail<font color="red">*</font>:</td> <td><input type="text" size="20" name="email"></td> </tr> <tr> <td>Имя:</td> <td><input type="text" size="20" name="name"></td> </tr> <tr> <td>Фамилия:</td> <td><input type="text" size="20" name="lastname"></td> </tr> <tr> <td></td> <td colspan="2"><input type="submit" value="Зарегистрироваться" name="submit"></td> </tr> </table> </form> <br><font color="red">*</font> обязательны для заполнения </body> </html>
При сохранении файла обязательно указать кодировку как и в предыдущих уроках и смотрим результат:
рис 1
2. Теперь создадим базу данных, в которой будут храниться данные зарегистрированных пользователей. Для этого:
а)
рис 2
Выбрем дополнительно-> phpMyAdmin;
b) Откроется окно где нужно указать пользователь root пароль не нужно указывать и ок.
рис 3
Откроется следующее окно:
рис 4
Во вкладке базы данных вводим название test выбираем utf8_general_ci и жмем создать:
c) Теперь в нашей базе данных нужно создать таблицу users где и будут храниться данные пользователей. Для этого выбираем нашу базу данных test->новая откроется следующее окно.
рис 5
d) Перед тем как заполнять поля таблицы мы добавим еще 2 так как имеющихся нам не хватит для нужной нам таблицы:
рис 6
Далее заполняем поля:
В столбцу имя указываем названия полей: id, email, password, date, name_user, lastname. Для поля id указываем тип int длина значения 11 этого будет достаточно. Для поля date выбираем тип timestamp. Для всех остальных полей выбираем тип varchar и длина 255. Для всех полей в графе сравнения указываем utf8_general_ci. И сохранить.
рис 7
3. Теперь нам нужна страница обработчик, которая указывается в строчке <form action=»proverka.php» method=»POST»> // страница обработчик. Создаем страницу proverka.php.
Первый код программы на странице:
<?php $connect=mysql_connect("localhost","root",""); /* Здесь мы подключаемся к базе используя функцию mysql_connect, в ней следует указать три параметра 1)сервер базы данных 2)логин пользователя БД 3)пароль пользователя БД */ $db=mysql_select_db("test"); //Здесь мы указываем //какую БД будем использовать ?>
Второй код программы:
<html> <head> <meta charset='utf-8'> <title>My First PHP Page</title> </head> <body>
<?php if (isset($_POST['submit'])){ $password = $_POST['password']; $mdPassword = md5($password); $password2 = $_POST['password2']; $email = $_POST['email']; $name = $_POST['name']; $lastname = $_POST['lastname']; $table=mysql_query("SELECT * FROM `users` WHERE `email`='$email'"); // проверка на существование email в базе данных $res=mysql_fetch_array($table); if($res['email']==$email){ echo '<font color="red">Пользователь с таким e-mail уже зарегистрирован!</font><a href="index.php">Войти на сайт</a> или <a href="SmenaParolya.php">сменить пароль</a>'; } else{ if ($password==$password2) // сравнение введённых пользователем паролей { $query = mysql_query("INSERT INTO `users` (password, email, name_user, lastname ) VALUES ('$mdPassword', '$email', '$name', '$lastname')"); echo '<font color="green">Вы успешно зарегистрировались!</font><br><a href="index.php">На главную</a>'; $query = mysql_query("select * from `users` where `email`='$email' and`password`='$mdPassword'"); $res=mysql_fetch_array($query); echo '<a href="aktiv.php?id1='.$res['id'].'&id2='.$res['password'].'">активировать</a>'; // ссылка на страницу для активации } else { echo '<font color="red">Пароли не совпадают!</font>'; } } } ?>
</body> </html>
Теперь пользователи могут регистрировать на сайте. Проверим работу формы:
рис 8
После нажатия кнопки зарегистрироваться выйдет окно:
рис 9
А в базе данных появится информация пользователя.
рис 10
Так как пользователи у нас уже существуют создадим форму входа на сайт. Для этого:
1. Создадим форму входа на странице index.php ee код будет таким:
<form action="login.php" method="POST"> <!-- страница обработчик--> <table> <tr> <td>E-mail:</td> <td><input type="text" name="email"></td> <!--поле для ввода email--> </tr> <tr> <td>Пароль:</td> <td><input type="password" name="password"></td> <!--поле для пароля--> </tr> <tr> // кнопка войти <td colspan="2"><input type="submit" value="Войти" name="submit"></td> </tr> </table> </form> <a href="registration.php">Регистрация</a> <br /> <!-- ссылка для тех кто еще не зарегистрирован-->
И добавим ее в начало страницы сразу же после меню.
2. Теперь создадим страницу обработчик login.php . Ее код будет такой:
<?php // как и на странице proverka.php $connect=mysql_connect("localhost","root",""); $db=mysql_select_db("test"); ?>
<html> <head> <meta charset='utf-8'> <title>My First PHP Page</title> </head> <body>
<?php if (isset($_POST['submit'])){ $password = md5($_POST['password']); $email = $_POST['email']; $table=mysql_query("SELECT * FROM `users` WHERE `email`='$email' and `password`='$password'"); $res=mysql_fetch_array($table); if($res['email']==$email and $res['password']==$password) // сравниваем введенные пользователем email и password с данными в базе существует ли такой пользователь или нет { echo '<font color="green">Добро пожаловать на сайт!</font>'; } else { echo '<font color="red">Введите верные пароль и email или </font><a href="registration.php">зарегистрируйтесь</a>'; } } ?>
</body> </html>
Проверяем работу формы:
рис 11
Вводим ранее зарегистрированного пользователя, и войти результат должен быть таким:
рис 12
3. Перед тем как создать страницу для проверки email добавим новое поле в таблицу базы данных status. Выбираем вкладку структура, откроется окно:
рис 13
Внизу есть строчка добавить 1 поле и ok. Откроется следующее окно:
рис 14
Заполняем, сохраняем, в таблице появилось теперь новое поле, где будет отражаться статус пользователя, активирован он или нет.
4. Создадим страницу подтверждения email . В коде на странице proverka.php была такая строчка
$query = mysql_query(«select * from `users` where `email`=’$email’ and `password`=’$mdPassword'»);
$res=mysql_fetch_array($query);
echo ‘<a href=»aktiv.php?id1=’.$res[‘id’].’&id2=’.$res[‘password’].'»>активировать</a>’;
и ссылка активировать после регистрации: (рис 9)
Создадим страницу aktiv.php . Ее код будет такой:
<?php // как и на страницах proverka.php и login.php подключение к базе данных обязательно $connect=mysql_connect("localhost","root",""); $db=mysql_select_db("test"); ?>
<html> <head> <meta charset='utf-8'> <title>My First PHP Page</title> </head> <body>
<?php $query = mysql_query("select * from `users` where `id`='".$_GET['id1']."' and `password`='".$_GET['id2']."'"); // выбираем из базы данных его id и пароль подписывая как id2 в целях безопсности. $res=mysql_fetch_array($query); if($res['id']==$_GET['id1']) // сравниваем результат и данные адресной строки { echo "ok"; mysql_query("update `users` set `status`='active' where `id`='".$_GET['id1']."' and `password`='".$_GET['id2']."'"); } else echo 'err'; ?>
</body> </html>
Теперь при нажатии на ссылку активировать будет выходить такое окно:
рис 15
И статус пользователя будет меняться в базе данных:
рис 16
И на следующем этапе создадим форму смены пароля . Для этого:
1. Создадим страницу SmenaParolya.php. Ее код будет таким:
<?php $connect=mysql_connect("localhost","root",""); $db=mysql_select_db("test"); ?>
<html> <head> <meta charset='utf-8'> <title>My First PHP Page</title> </head> <body>
<?php if (isset($_POST['submit'])){ $np=mysql_query("update `users` set password = '".md5($_POST['passwordn'])."' where `email` = '".$_POST['email']."'"); // заменить данные пароль на новые $res=mysql_query($np); echo '<font color="green">Пароль сохранен успешно!</font>'; } ?>
<form method="POST"> <table> <tr> <td>E-mail:</td> <td><input type="text" name="email"></td> </tr> <tr> <td>Новый пароль:</td> <td><input type="password" name="passwordn"></td> </tr> <tr> <td colspan="2"><input type="submit" value="Сохранить" name="submit"></td> </tr> </table> </form> </body>
И добавим ссылку на эту страницу в index.php сразу же после ссылки на регистрацию:
<a href=»SmenaParolya.php»>Заменить пароль</a> <br />
рис 17
Теперь проверим работу формы заменим одному из зарегистрированных раннее пользователь пароль.
Информация в базе данных до смены пароля:
рис 18
Информация в базе данных после смены пароля:
рис 19
Форма работает.