このコードを手動でコードチェッカーを使用して何度も確認しましたが、エラーが表示されません。フィールドのいずれかが空白のままであるか、パスワードが一致しない場合にエラーが発生する登録ページを作成しています。フォームは問題ないように見えますが、登録しようとすると、「次のエラーが発生しました - パスワードを入力してください。もう一度やり直してください」というエラー メッセージが表示されます。これは、パスワードとして何を入力しても発生します。
また、フォームは、エラー メッセージが表示されたときに入力されたデータを記憶する必要がありますが、何らかの理由で姓と電子メール フィールドは入力されますが、名は入力されません。繰り返しますが、スクリプトを見ると、その理由がわかりません。
私は基本的な本から学んでいます-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>