0

このコードを手動でコードチェッカーを使用して何度も確認しましたが、エラーが表示されません。フィールドのいずれかが空白のままであるか、パスワードが一致しない場合にエラーが発生する登録ページを作成しています。フォームは問題ないように見えますが、登録しようとすると、「次のエラーが発生しました - パスワードを入力してください。もう一度やり直してください」というエラー メッセージが表示されます。これは、パスワードとして何を入力しても発生します。

また、フォームは、エラー メッセージが表示されたときに入力されたデータを記憶する必要がありますが、何らかの理由で姓と電子メール フィールドは入力されますが、名は入力されません。繰り返しますが、スクリプトを見ると、その理由がわかりません。

私は基本的な本から学んでいます-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>
4

1 に答える 1

2

)括弧 " "を忘れました

$q = "INSERT INTO users
(first_name, last_name, email, pass, reg_date)
VALUES ('$fn', '$ln', '$e', SHA1('$p'), NOW()) " ;
                                             ^^ Here
于 2013-09-30T21:36:19.177 に答える