Подтверждение регистрации email кодом
При нажатии на кнопку отправить код, приходит код вот в таком виде + информация отправителя
"Ваш временный код: LhWA2E"
вот php код который реализует регистрацию и эту функцию После того как приходит код, появляется поле для его ввода , и как бы я не вводил, код всегда оказывается не верным. В чем может быть проблема?
<?php
function generateCode($length = 6) {
$characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$code = "";
for ($i = 0; $i < $length; $i++) {
$code .= $characters[rand(0, strlen($characters) - 1)];
}
return $code;
}
// Проверяем, была ли отправлена форма с почтой
if (isset($_POST['get_code'])) {
$mail = $_POST['mail'];
if (empty($mail)) {
echo "<table>";
echo "<tr>";
echo "<td>Пожалуйста, введите почту</td>";
echo "</tr>";
echo "</table>";
} else {
// Проверяем существование пользователя с такой почтой в базе данных
$checkQuery = "SELECT id FROM users WHERE mail = '$mail'";
$result = mysqli_query($conn, $checkQuery);
if (mysqli_num_rows($result) > 0) {
echo "<table>";
echo "<tr>";
echo "<td>Пользователь с такой почтой уже зарегистрирован</td>";
echo "</tr>";
echo "</table>";
} else {
// Генерация и отправка кода на почту
$code = generateCode(6);
$to = $mail;
$subject = "Временный код регистрации";
$message = "Ваш временный код: $code";
$headers = "From: ...";
if (mail($to, $subject, $message, $headers)) {
// Сохранение кода в базе данных, чтобы можно было проверить его в следующем шаге
$codeQuery = "INSERT INTO verification_codes (mail, code) VALUES ('$mail', '$code')";
mysqli_query($conn, $codeQuery);
// Показать поле для ввода кода и кнопку для регистрации
echo '<form method="POST" action="" name="go">
<input type="text" class="form-control" id="code" name="code" placeholder="Код">
<button type="submit" name="go" class="btn btn-primary">Зарегистрироваться</button>
</form>';
} else {
echo "<table>";
echo "<tr>";
echo "<td>Не удалось отправить код на почту</td>";
echo "</tr>";
echo "</table>";
}
}
}
}
// Проверяем, была ли отправлена форма с кодом и почтой
if (isset($_POST['go'])) {
$code = $_POST['code'];
$mail = $_POST['mail'];
// Проверяем, соответствует ли введенный код тому, который был отправлен на почту
$checkCodeQuery = "SELECT * FROM verification_codes WHERE mail = '$mail' AND code = '$code'";
$result = mysqli_query($conn, $checkCodeQuery);
if (mysqli_num_rows($result) > 0) {
// Код верный, регистрируем пользователя
$registerQuery = "INSERT INTO users (mail) VALUES ('$mail')";
mysqli_query($conn, $registerQuery);
echo "<table>";
echo "<tr>";
echo "<td>Пользователь успешно зарегистрирован</td>";
echo "</tr>";
echo "</table>";
} else {
// Код некорректный, выдаем ошибку
echo "<table>";
echo "<tr>";
echo "<td>Неверный код</td>";
echo "</tr>";
echo "</table>";
}}
elseif (isset($_POST['go'])) {
$name = $_POST["name"];
$fullname = $_POST["fullname"];
$mail = $_POST["mail"];
$pass = $_POST["pass"];
if (empty($name) || empty($fullname) || empty($mail) || empty($pass)) {
echo "<table>";
echo "<tr>";
echo "<td>Нужно заполнить все поля для регистрации</td>";
echo "</tr>";
echo "</table>";
} else {
// Проверяем существование пользователя с такой почтой в базе данных
$checkQuery = "SELECT id FROM users WHERE mail = '$mail'";
$result = mysqli_query($conn, $checkQuery);
if (mysqli_num_rows($result) > 0) {
$query = "INSERT INTO users (id, name, fullname, mail, pass, adres) VALUES (NULL, '$name', '$fullname', '$mail', '$pass' ,'$adres');";
mysqli_query($conn, $query);
}
}
}
?>
И HTML код к которому привязан php
<form class="LogForm" method="post">
<div class="soForm">
<div class="row mb-4">
<div class="col">
<div class="form-outline">
<input type="text" class="form-control" id="name"
name="name" aria-describedby="emailHelp" value="<?= isset($_POST['name']) ? $_POST['name'] : '' ?>">
<label class="form-label" for="form3Example1">Имя</label>
</div>
</div>
<div class="col">
<div class="form-outline">
<input type="text" class="form-control" id="fullname" name="fullname" value="<?= isset($_POST['fullname']) ? $_POST['fullname'] : '' ?>">
<label class="form-label" for="form3Example2">Фамилия</label>
</div>
</div>
</div>
<div class="form-outline mb-4">
<input type="email" class="form-control" id="mail" name="mail" value="<?= isset($_POST['mail']) ? $_POST['mail'] : '' ?>">
<label class="form-label" for="form3Example3">Почта</label>
</div>
<button type="submit" name='get_code' class="btn btn-primary btn-block mb-4">Отправить код</button>
<div class="form-outline mb-4">
<input type="password" class="form-control" id="pass" name="pass">
<label class="form-label" for="form3Example4">Пароль</label>
</div>
</div>
</form>