Помогите в php добавить подтверждение пароля
Помогите добавить подтверждение пароля в регистрации желательно с готовым кодом
<!doctype html>
<html lang="en">
<head>
<title>Регистрация</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<link rel="stylesheet" href="css/style.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<!-- Форма регистрации -->
<form action="validation-form/check.php" method="POST">
<label>Логин</label>
<input type="text" name="surname" id="surname" placeholder="Введите фамилию"><br>
<input type="text" name="name" id="name" placeholder="Введите имя"><br>
<label>Пароль</label>
<input type="password" name="pass" id="pass" placeholder="Введите пароль"><br>
<label>Подтверждение пароля</label>
<input type="password" name="password_confirm" placeholder="Подтвердите пароль">
<button type="submit">Зарегистрироваться</button>
<p>
У вас уже есть аккаунт? - <a href="/">авторизируйтесь</a>!
</p>
<?php
if ($_SESSION['message']) {
echo '<p class="msg"> ' . $_SESSION['message'] . ' </p>';
}
unset($_SESSION['message']);
?>
</form>
</body>
</html>
<?php
// Получение данных из формы
$surname = filter_var(trim($_POST['surname']), FILTER_SANITIZE_STRING);
$name = filter_var(trim($_POST['name']), FILTER_SANITIZE_STRING);
$pass = filter_var(trim($_POST['pass']), FILTER_SANITIZE_STRING);
if(mb_strlen($name) < 5 || mb_strlen($name) > 15) {
echo "Недопустимая длина имени (от 6 до 15 символов)";
exit();
} else if (mb_strlen($surname) < 5 || mb_strlen($surname) > 15) {
echo "Недопустимая длина фамилии (от 6 до 15 символов)";
exit();
} else if (mb_strlen($pass) < 5 || mb_strlen($pass) > 20) {
echo "Недопустимая длина пароля (от 6 до 20 символов)";
exit();
}
$pass = md5($password);
// Подключение к базе данных
require "../blocks/connect.php";
$mysql->query("INSERT INTO `users` (`name`, `surname`, `pass`) VALUES('$name', '$surname', '$pass')");
$mysql->close();
header('Location: /');
?>
Ответы (2 шт):
Автор решения: Denis640Kb
→ Ссылка
Задачу проверки подтверждения пароля можно реализовать таким образом.
Если проверка при нажатии на кнопку.
Как понимаю - файл взят из контекста, добавил несколько комментариев с пояснениями:
Первый файл
<?php
?>
<!doctype html>
<html lang="en">
<head>
<title>Регистрация</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<link rel="stylesheet" href="css/style.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<!-- Форма регистрации -->
<form action="validation-form/check.php" method="POST">
<label>Логин</label>
<input type="text" name="surname" id="surname" placeholder="Введите фамилию" required><br>
<input type="text" name="name" id="name" placeholder="Введите имя" required><br>
<label>Пароль</label>
<input type="password" name="pass" id="pass" placeholder="Введите пароль" required><br>
<label>Подтверждение пароля</label>
<input type="password" name="password_confirm" placeholder="Подтвердите пароль" required>
<button type="submit">Зарегистрироваться</button>
<p>
У вас уже есть аккаунт? - <a href="/">авторизируйтесь</a>!
</p>
<?php
if ($_SESSION['message']) {
echo '<p class="msg"> ' . $_SESSION['message'] . ' </p>';
}
unset($_SESSION['message']);
?>
</form>
</body>
</html>
Второй файл:
<?php
// Получение данных из формы
$surname = filter_var(trim($_POST['surname']), FILTER_SANITIZE_STRING);
$name = filter_var(trim($_POST['name']), FILTER_SANITIZE_STRING);
$pass = filter_var(trim($_POST['pass']), FILTER_SANITIZE_STRING);
if(isset($_POST['password_confirm'])){ // Получаем данные из формы
$Repass = $_POST['password_confirm'];
} else {
$Repass = "";
}
if(mb_strlen($name) < 5 || mb_strlen($name) > 15) {
echo "Недопустимая длина имени (от 6 до 15 символов)";
exit();
} else if (mb_strlen($surname) < 5 || mb_strlen($surname) > 15) {
echo "Недопустимая длина фамилии (от 6 до 15 символов)";
exit();
} else if (mb_strlen($pass) < 5 || mb_strlen($pass) > 20) {
echo "Недопустимая длина пароля (от 6 до 20 символов)";
exit();
}
if($Repass == $pass){
$pass = md5($password); // Тут у Вас берётся переменная $password, а должна быть $pass скорее всего.
// Подключение к базе данных
require "../blocks/connect.php";
$mysql->query("INSERT INTO `users` (`name`, `surname`, `pass`) VALUES('$name', '$surname', '$pass')");
$mysql->close();
header('Location: /');
} else {
echo 'Ошибка подтверждения пароля'; // Если пароли не совпадают, то выводим сообщение об ошибке. (Таким же способом можно выводить в конкретное поле, прописав в основном файле php)
include "../help26.php"; // Если пароли не совпадают, то возвращаем на страницу ввода. Тут своё название и путь к файлу укажите.
}
?>
Второй вариант - это сделать через js.
При вводе данных в поле проверки пароля сразу проверять данные.
Если не совпадают, то выводим ошибку, если совпадают - соответствующее сообщение.
<?php
?>
<!doctype html>
<html lang="en">
<head>
<title>Регистрация</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<link rel="stylesheet" href="css/style.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<!-- Форма регистрации -->
<form action="validation-form/check.php" method="POST">
<div id="error"></div>
<label>Логин</label>
<input type="text" name="surname" id="surname" placeholder="Введите фамилию" required><br>
<input type="text" name="name" id="name" placeholder="Введите имя" required><br>
<label>Пароль</label>
<input type="password" name="pass" id="pass" placeholder="Введите пароль" required><br>
<label>Подтверждение пароля</label>
<input type="password" name="password_confirm" placeholder="Подтвердите пароль" required>
<button type="submit" id="reg">Зарегистрироваться</button>
<p>
У вас уже есть аккаунт? - <a href="/">авторизируйтесь</a>!
</p>
<?php
if ($_SESSION['message']) {
echo '<p class="msg"> ' . $_SESSION['message'] . ' </p>';
}
unset($_SESSION['message']);
?>
</form>
<script language="JavaScript">
var z = document.getElementsByName('password_confirm');
z[0].oninput = function () {
var pass = document.getElementById('pass').value;
var err = document.getElementById('error');
if(z[0].value != pass){
err.innerText = 'Пароли не совпадают';
} else {
err.innerText = 'Пароли совпадают, можно регистрироваться';
}
}
</script>
</body>
</html>
Автор решения: Zhandos
→ Ссылка
Вы можете реальзовать подтверждение пароля по разному, можно также использовать плагин jquery validator. Ссылка https://jqueryvalidation.org/ Используйте правило equalTo