Есть index.html Там инпуты: логин, пароль и почта. Две кнопки регистрация и Вход на сайт. Далее перемещаемся в файл save_user.php, где обработка этих двух кнопок формы: 1) Регистрация. Проверка введенного, если всё соответствует, то заносим в базу + отсылаем письмо с GET адресом для активации. Далее с почты заходим на activate.php+Get. Активация прошла успешно и можем с index.html попадать на сайт с помощью логина и пароля. 2) Вход на сайт. Проверяем чтобы логин и пароль были, сверяем с базой. Если совпало зашли на сайт. там только одна кнопка "показать мои данные и редактировать их". При нажатии кнопки загружается info_user.php, где три инпута: логин, пароль и почта с уже данными этого пользователя + кнопка "исправить". Он их правит, жмет кнопку и попадает на correct.php, где данные проверяются и вносятся в базу. ОЧЕНЬ ПЛИЗ НУЖНО ПОМОЧЬ расставить аутентификацию JWT: 1) при переходе на activate.php+Get посетителю отдается ключ JWT. 2) при входе на сайт по логину и паролю посетителю отдается ключ JWT. 3) при загрузке info_user.php от посетителя передается ключ JWT. 4) при нажатии кнопки "исправить" от посетителя передается ключ JWT.
index.html:
<html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Регистрация</title>
</head>
<body>
<form action="save_user.php" method="post">
<label>Введите логин (только лат.буквы, цифры и подчеркивание до 15 знаков): <input type="text" size="15" maxlength="15" name="lg" id="lg"></label><br><br>
<label>Пароль (только лат.буквы, цифры и подчеркивание до 15 знаков): <input type="password" size="15" maxlength="15" name="ps" id="ps"></label><br><br>
<label>Почта (до 30 знаков): <input type="text" size="30" maxlength="30" name="email" id="email"></label><br><br>
<input type="submit" name="register" id="register" value="Зарегистрироваться">
<input type="submit" name="enter" id="enter" value="Войти на сайт">
</form>
</body>
</html>
save_user.php:
<?php
header("Content-Type: text/html; charset=utf-8");
if (isset($_POST['lg']))
{
$lg = $_POST['lg'];
if ($lg == '') unset($lg);
}
if (isset($_POST['ps']))
{
$ps=$_POST['ps'];
if ($ps =='') unset($ps);
}
if (isset($_POST['email']))
{
$email=$_POST['email'];
if ($email =='') unset($email);
}
if (empty($lg) or empty($ps)) exit ("Вы не ввели логин или пароль, вернитесь назад и заполните все поля!");
require_once 'bd.php'; // здесь лежат переменные для подключения к базе данных $host, $user, $pswd, $database
if($_POST['register'])
{
if (empty($email)) exit ("Вы не ввели адрес почты, вернитесь назад и заполните все поля!");
else if(!filter_var($email, FILTER_VALIDATE_EMAIL)) exit ("Вы некорректно ввели электронную почту!");
else if (!preg_match('/[A-Za-z_0-9]+/', $lg)) exit ("Вы некорректно ввели логин!");
else if (!preg_match('/[A-Za-z_0-9]+/', $ps)) exit ("Вы некорректно ввели пароль!");
else
{
$result = mysqli_connect($host, $user, $pswd, $database) or die("Не могу соединиться с базой.");
$qty1 = 0;
$result1 = mysqli_query($result, "SELECT user_lg FROM `user` WHERE user_lg = '$lg'") or die("Не могу сделать поиск по логину в базе");
$qty1 = mysqli_num_rows($result1); //получаем количество результатов поиска
if($qty1 > 0) {mysqli_close($result); exit ("Логин уже существует в базе, выберите другой!");}
$qty2 = 0;
$result2 = mysqli_query($result, "SELECT user_email FROM `user` WHERE user_email = '$email'") or die("Не могу сделать поиск по почте в базе"); // LIMIT1
$qty2 = mysqli_num_rows($result2); //получаем количество результатов поиска
if($qty2 > 0) {mysqli_close($result); exit ("Почтовый адрес уже существует в базе, выберите другой!");}
if($qty1 == 0 and $qty2 == 0)
{
$from = "admin@xxx.com";
$arr = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','r','s','t','u','v','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','R','S','T','U','V','X','Y','Z',
'1','2','3','4','5','6','7','8','9','0');
$hash_code = "";
for($i=1;$i<31;$i++) $hash_code = $hash_code . $arr[rand(0, 58)];
$subject = "Подтверждение регистрации";
$message = "Вы хотели зарегистрироваться на сайте: xxx.com" .
". Ваш логин: " . $lg .
". Ваш пароль: " . $ps .
". Для окончательной регистрации перейдите по этой ссылке:" .
"https://xxx/activate.php?hash=" . $hash_code;
if (!mail($email, $subject, $message, 'From: ' . $from))
{
$conclusion = "МЫ не смогли отправить Вам письмо. Начните регичтрацию сначало.";
}
else
{
$result3 = mysqli_query($result, "INSERT INTO `user`(user_lg, user_ps, user_email, user_hash) VALUES ('$lg', '$ps','$email','$hash_code')");
mysqli_close($result);
if($result3) echo "НА ВАШУ ПОЧТУ ОТПРАВЛЕНО ПИСЬМО.<br>
ДЛЯ ЗАВЕРШЕНИЯ РЕГИСТРАЦИИ ПЕРЕЙДИТЕ В СВОЙ ПОЧТОВЫЙ ЯЩИК,<br>
ОТКРОЙТЕ НАШЕ ПИСЬМО И ПЕРЕЙДИТЕ ПО ССЫЛКЕ В ЭТОМ ПИСЬМЕ.";
}
}
}
}
else if ($_POST['enter'])
{
$result = mysqli_connect($host, $user, $pswd, $database) or die("Не могу соединиться с базой.");
$qty3 = 0;
$result1 = mysqli_query($result, "SELECT * FROM `user` WHERE user_lg = '$lg' AND user_ps = '$ps'") or die("Не могу сделать поиск по логину в базе");
$qty3 = mysqli_num_rows($result1); //получаем количество результатов поиска
if($qty3 > 0)
{
$rows = mysqli_fetch_assoc($result1);
if ($rows["user_hash"] == "")
{
echo "Вы вошли на сайт!";
echo '
<html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Получение информации</title>
</head>
<body>
<form action="info_user.php" method="post">
<input type="submit" name="giveMi" id="giveMi" value="Получить и редактировать данные">
</form>
</body>
</html>
';
}
else exit ("Вы не активировали свою регистрацию. Зайдите на указанную Вами почту и перейдите по ссылке в нашем письме.");
}
else {mysqli_close($result); exit ("Такой логина или пароля не существует в базе!");}
}
?>
activate.php:
<?php
header("Content-Type: text/html; charset=utf-8");
require_once 'bd.php';
$hash = $_GET['hash'];
if (preg_match('/[^A-Za-zА-Яа-я0-9]/', $hash) === TRUE) $hash = 0;
$qty = -1;
$result = mysqli_connect($host, $user, $pswd, $database) or die("Не могу соединиться с mysqli.");
$result1 = mysqli_query($result, "SELECT * FROM `user` WHERE user_hash='$hash' LIMIT 1");
$qty = mysqli_num_rows($result1);
if($qty > 0)
{
$result2 = mysqli_query($result, "UPDATE `user` SET user_hash = '' WHERE user_hash = '$hash'") or die("Не могу сделать поиск по коду в базе");
if($result2) $message = "Ваша учетная запись активирована.";
else $message = "Ваша учетная запись не активирована. Попробуйте перейти по ссылке еще раз.";
}
else
{
$message = "Ваша учетная запись не активирована. Попробуйте перейти по ссылке еще раз.";
}
mysqli_close($result);
echo $message;
?>
info_user.php (как-то по ключу передаются данные: логин, пароль, почта):
<?php
echo '
<html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Регистрация</title>
</head>
<body>
<form action="correction.php" method="post">
<label>Введите логин (только лат.буквы, цифры и подчеркивание до 15 знаков): <input type="text" size="15" maxlength="15" name="lg" id="lg" value="' . $lg . '"></label><br><br>
<label>Пароль (только лат.буквы, цифры и подчеркивание до 15 знаков): <input type="password" size="15" maxlength="15" name="ps" id="ps" value="' . $ps . '"></label><br><br>
<label>Почта (до 30 знаков): <input type="text" size="30" maxlength="30" name="email" id="email" value="' . $email . '"></label><br><br>
<input type="submit" name="correct" id="correct" value="Исправить">
</form>
</body>
</html>
';
?>
correction.php:
<?php
header("Content-Type: text/html; charset=utf-8");
if (isset($_POST['lg']))
{
$lg = $_POST['lg'];
if ($lg == '') unset($lg);
}
if (isset($_POST['ps']))
{
$ps=$_POST['ps'];
if ($ps =='') unset($ps);
}
if (isset($_POST['email']))
{
$email=$_POST['email'];
if ($email =='') unset($email);
}
if (empty($lg) or empty($ps) or empty($email)) exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
else if(!filter_var($email, FILTER_VALIDATE_EMAIL)) exit ("Вы некорректно ввели электронную почту!");
else if (!preg_match('/[A-Za-z_0-9]+/', $lg)) exit ("Вы некорректно ввели логин!");
else if (!preg_match('/[A-Za-z_0-9]+/', $ps)) exit ("Вы некорректно ввели пароль!");
else
{
require_once 'bd.php'; // здесь лежат переменные для подключения к базе данных $host, $user, $pswd, $database
$result = mysqli_connect($host, $user, $pswd, $database) or die("Не могу соединиться с базой.");
$qty1 = 0;
$result1 = mysqli_query($result, "SELECT user_lg FROM `user` WHERE user_lg = '$lg' LIMIT 1") or die("Не могу сделать поиск по логину в базе");
if($result1) $qty1 = mysqli_num_rows($result1); //получаем количество результатов поиска
if($qty1 > 0) {mysqli_close($result); exit ("Логин уже существует в базе, выберите другой!");}
$qty2 = 0;
$result2 = mysqli_query($result, "SELECT user_email FROM `user` WHERE user_email = '$email' LIMIT 1") or die("Не могу сделать поиск по почте в базе");
if($result2) $qty2 = mysqli_num_rows($result2); //получаем количество результатов поиска
if($qty2 > 0) {mysqli_close($result); exit ("Почтовый адрес уже существует в базе, выберите другой!");}
if($qty1 == 0 and $qty2 == 0)
{
$result3 = mysqli_query($result, "INSERT INTO `user`(user_lg, user_ps, user_email) VALUES ('$lg', '$ps','$email')");
if($result3) echo "Вы успешно усправили регистрационные данные!";
mysqli_close($result);
}
}
?>
В интернете мало примеров. В основном теория. Пример на franework раздутый и не рабочий. Дней пять боролся сам, теперь ищу помощи.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
При запуске скрипта crontab ругается на функцию, которая приведена нижеВыдает ошибку -