Задание по php к четвертому уроку

Автор: | 24.08.2015

Задание.
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>

При сохранении файла обязательно указать кодировку как и в предыдущих уроках и смотрим результат:

у4-1

рис 1

2. Теперь создадим базу данных, в которой будут храниться данные зарегистрированных пользователей. Для этого:

а)

у4-2

рис 2

 Выбрем дополнительно-> phpMyAdmin;

b) Откроется окно где нужно указать пользователь root пароль не нужно указывать и ок.

у4-7

рис 3

Откроется следующее окно:

у4-4

рис 4

Во вкладке базы данных вводим название test выбираем utf8_general_ci и жмем создать:
c) Теперь в нашей базе данных нужно создать таблицу users где и будут храниться данные пользователей. Для этого выбираем нашу базу данных test->новая откроется следующее окно.

у4-3

рис 5

d) Перед тем как заполнять поля таблицы мы добавим еще 2 так как имеющихся нам не хватит для нужной нам таблицы:

у4-6

рис 6

Далее заполняем поля:

В столбцу имя указываем названия полей: id, email, password, date, name_user, lastname. Для поля id указываем тип int длина значения 11 этого будет достаточно. Для поля date выбираем тип timestamp. Для всех остальных полей выбираем тип varchar и длина 255. Для всех полей в графе сравнения указываем utf8_general_ci. И сохранить.

у4-8

рис 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>

Теперь пользователи могут регистрировать на сайте. Проверим работу формы:

у4-9

рис 8

После нажатия кнопки зарегистрироваться выйдет окно:

у4-10

рис 9

А в базе данных появится информация пользователя.

у4-11

рис 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>

Проверяем работу формы:

у4-12

рис 11

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

у4-13

рис 12

3. Перед тем как создать страницу для проверки email добавим новое поле в таблицу базы данных status. Выбираем вкладку структура, откроется окно:

у4-14

рис 13

Внизу есть строчка добавить 1 поле и ok. Откроется следующее окно:

у4-15

рис 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>

Теперь при нажатии на ссылку активировать будет выходить такое окно:

у4-16

рис 15

И статус пользователя будет меняться в базе данных:

у4-17

рис 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 />

у4-18

рис 17

Теперь проверим работу формы заменим одному из зарегистрированных раннее пользователь пароль.
Информация в базе данных до смены пароля:

у4-19

рис 18

Информация в базе данных после смены пароля:

у4-20

рис 19

Форма работает.