注册页面未注册用户

时间:2013-09-30 21:33:21

标签: php mysql

我一次又一次地通过这个代码手动并使用代码检查器,但无法看到我的错误。我正在构建一个注册页面,如果任何字段留空或密码不匹配,应该给出错误。表单看起来很好,但是当我尝试注册时,我收到错误消息“发生以下错误 - 请输入您的密码。请再试一次。”无论我输入什么密码,都会发生这种情况。

此外,表单应记住在给出错误消息时输入的数据,但由于某种原因,它将填写姓氏和电子邮件字段,但不填写名字。再一次,在查看脚本时,我无法理解为什么会这样。

我正在学习一本基础书 - 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>

1 个答案:

答案 0 :(得分:2)

您忘了括号“)

$q = "INSERT INTO users
(first_name, last_name, email, pass, reg_date)
VALUES ('$fn', '$ln', '$e', SHA1('$p'), NOW()) " ;
                                             ^^ Here
相关问题