Я проверил этот код снова и снова вручную и с помощью проверок кода, но не вижу моей ошибки. Я создаю страницу регистрации, которая должна давать ошибки, если какое-либо из полей осталось пустым или пароли не совпадают. Форма выглядит просто отлично, но когда я пытаюсь зарегистрироваться, я получаю сообщение об ошибке «Произошли следующие ошибки: введите пароль». Повторите попытку ». Это происходит независимо от того, что я вводил в качестве пароля.Страница регистрации не регистрируется
Кроме того, в форме должны быть указаны данные, которые были введены при выдаче сообщения об ошибке, но по какой-то причине он заполняет фамилию и поля электронной почты, но не имя. Опять же, глядя на сценарий, я не понимаю, почему это так.
Я изучаю основную книгу - PHP & MySQL в простых шагах, которые могут быть не самыми лучшими, но я хочу закончить его, прежде чем переходить на что-то другое.
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Providing a register page</title>
</head>
<body>
<?php
$page_title = 'Register' ;
include ('includes/header.html');
if ($_SERVER[ 'REQUEST_METHOD' ] == 'POST') {
require ('../connect_db.php');
$errors = array() ;
if (empty($_POST[ 'first_name' ])) {
$errors[] = 'Enter your first name.';
} else {
$fn = mysqli_real_escape_string($dbc, trim($_POST[ 'first_name' ]));
}
if (empty($_POST[ 'last_name' ])) {
$errors[] = 'Enter your last name.';
} else {
$ln = mysqli_real_escape_string($dbc, trim($_POST[ 'last_name' ]));
}
if (empty($_POST[ 'email' ])) {
$errors[] = 'Enter your email address.';
} else {
$e = mysqli_real_escape_string($dbc, trim($_POST[ 'email' ]));
}
if (!empty($_POST[ 'pass1' ])) {
if ($_POST[ 'pass1' ] != $_POST[ 'pass2' ]) {
$errors[] = 'Passwords do not match.';
} else {
$p = mysqli_real_escape_string($dbc, trim($_POST[ 'pass1' ]));
}
} else {
$errors[] = 'Enter your password.';
}
if (empty($errors)) {
$q = "SELECT user_id FROM users WHERE email='$e'";
$r = mysqli_query ($dbc , $q);
if (mysqli_num_rows($r) != 0) {
$errors[] = 'Email address already registered. <a href="login.php">Login</a>';
}
}
if (empty($errors)) {
$q = "INSERT INTO users (first_name, last_name, email, pass, reg_date) VALUES ('$fn', '$ln', '$e', SHA1('$p'), NOW()";
$r = mysqli_query ($dbc , $q);
if ($r) {
echo '<h1>Registered!</h1>'
.'<p>You are now registered.</p>'
.'<p><a href="login.php">Login</a></p>';
}
mysqli_close($dbc) ;
include ('includes/footer.html');
exit();
} else {
echo '<h1>Error!</h1>'
.'<p id="err_msg">The following error(s) occurred:<br>';
foreach ($errors as $msg) {
echo " - $msg<br>";
}
echo 'Please try again.</p>';
mysqli_close($dbc);
}
?>
<h1>Register</h1>
<form action="register.php" method="POST">
<p>
First Name: <input type="text" name="first_name"
value="<?php if (isset($_POST[ ' first_name' ])) echo $_POST[ 'first_name' ] ; ?>">
Last Name: <input type="text" name="last_name"
value="<?php if (isset($_POST[ 'last_name' ])) echo $_POST[ 'last_name' ] ; ?>">
</p><p>
Email address: <input type="text" name="email"
value="<?php if (isset($_POST[ 'email' ])) echo $_POST[ 'email' ] ; ?>">
</p><p>
Password: <input type="password name="pass1"
value="<?php if (isset($_POST[ 'pass1' ])) echo $_POST[ 'pass1' ] ; ?>">
Password: <input type="password name="pass2"
value="<?php if (isset($_POST[ 'pass2' ])) echo $_POST[ 'pass2' ] ; ?>">
</p><p>
<input type="submit" value="Register"> </p>
</form>
<?php include ('includes/footer.html') ; ?>
</body>
</html>
Пожалуйста, используйте ''