首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >注册页面未注册用户

注册页面未注册用户
EN

Stack Overflow用户
提问于 2013-10-01 05:33:21
回答 1查看 177关注 0票数 0

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

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

我正在从一本基础的书- PHP & MySQL in steps中学习,这本书可能不是最好的,但我想在继续学习其他东西之前先完成它。

代码语言:javascript
复制
<!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>
EN

回答 1

Stack Overflow用户

发布于 2013-10-01 05:36:19

你忘了一个括号")

代码语言:javascript
复制
$q = "INSERT INTO users
(first_name, last_name, email, pass, reg_date)
VALUES ('$fn', '$ln', '$e', SHA1('$p'), NOW()) " ;
                                             ^^ Here
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19104254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档