为什么我无法检查我的输入并将数据注册到数据库中? [英] Why i can't check my input and register my data into database?

查看:86
本文介绍了为什么我无法检查我的输入并将数据注册到数据库中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

它不显示任何错误输出并验证输入字段。在这段代码中,我不知道这里发生了什么。希望有人能够弄清楚会发生什么。谢谢...



这里的数据库连接

 < php 

//这将避免mysql_connect()弃用错误。
error_reporting(〜E_DEPRECATED&〜E_NOTICE);
//但我强烈建议您使用PDO或MySQLi。

define('DBHOST','localhost');
define('DBUSER','root');
define('DBPASS','');
define('DBNAME','loginquestdb');

$ conn = mysqli_connect(DBHOST,DBUSER,DBPASS);
$ dbcon = mysqli_select_db($ conn,DBNAME); ($连接失败:。mysqli_error($ conn));

$ b $ if(!$ dbcon){
die(数据库连接失败:。mysqli_error($ conn));
}

这里的html代码:

 <!DOCTYPE html> 
< html>
< head>
< meta http-equiv =Content-Typecontent =text / html; charset = utf-8/>
< title>编码笼 - 登入&注册系统< / title>
< link rel =stylesheethref =assets / css / bootstrap.min.csstype =text / css/>
< link rel =stylesheethref =style.csstype =text / css/>
< / head>
< body>

< div class =container>

< div id =login-form>
< form method =postaction =<?php echo htmlspecialchars($ _ SERVER ['PHP_SELF']);?>自动填充= 关闭 >

< div class =col-md-12>

< div class =form-group>
< h2 class =>注册。< / h2>
< / div>

< div class =form-group>
< hr />
< / div>

<?php
if(isset($ errMSG)){

?>
< div class =form-group>
< div class =alert alert-<?php echo($ errTyp ==success)?success:$ errTyp;?>>
< span class =glyphicon glyphicon-info-sign>< / span> <?php echo $ errMSG; ?>
< / div>
< / div>
<?php
}
?>

< div class =form-group>
< div class =input-group>
< span class =input-group-addon>< span class =glyphicon glyphicon-user>< / span>< / span>
< input type =textname =nameclass =form-controlplaceholder =Enter Namemaxlength =50value =<?php echo $ name?> />
< / div>
< span class =text-danger><?php echo $ nameError; ?>< /跨度>
< / div>

< div class =form-group>
< div class =input-group>
< span class =input-group-addon>< span class =glyphicon glyphicon-envelope>< / span>< / span>
< input type =emailname =emailclass =form-controlplaceholder =输入您的电子邮件maxlength =40value =<?php echo $ email?> />
< / div>
< span class =text-danger><?php echo $ emailError; ?>< /跨度>
< / div>

< div class =form-group>
< div class =input-group>
< span class =input-group-addon>< span class =glyphicon glyphicon-lock>< / span>< / span>
< input type =passwordname =passclass =form-controlplaceholder =Enter Passwordmaxlength =15/>
< / div>
< span class =text-danger><?php echo $ passError; ?>< /跨度>
< / div>

< div class =form-group>
< hr />
< / div>

< div class =form-group>
< button type =submitclass =btn btn-block btn-primaryname =btn-signup>注册< / button>
< / div>

< div class =form-group>
< hr />
< / div>

< div class =form-group>
< a href =index.php>在此登入...< / a>
< / div>

< / div>

< / form>
< / div>

< / div>

< / body>
< / html>
<?php ob_end_flush(); ?>

这里是php代码:

 <?php 
ob_start();
session_start();
if(isset($ _ SESSION ['user'])!=){
header(Location:home.php);
}
include_once'dbconnect.php';

$ error = false;

if(isset($ _ POST ['btn-signup'])){

//清理用户输入以防止sql注入
$ name = trim( $ _POST [ '名称']);
$ name = strip_tags($ name);
$ name = htmlspecialchars($ name);

$ email = trim($ _ POST ['email']);
$ email = strip_tags($ email);
$ email = htmlspecialchars($ email);

$ pass = trim($ _ POST ['pass']);
$ pass = strip_tags($ pass);
$ pass = htmlspecialchars($ pass);

//基本名称验证
if(empty($ name)){
$ error = true;
$ nameError =请输入您的全名。;
} else if(strlen($ name)< 3){
$ error = true;
$ nameError =名称必须至少有3个字符。;
} else if(!preg_match(/ ^ [a-zA-Z] + $ /,$ name)){
$ error = true;
$ nameError =名称必须包含字母和空格。;


//基本电子邮件验证
if(!filter_var($ email,FILTER_VALIDATE_EMAIL)){
$ error = true;
$ emailError =请输入有效的电子邮件地址。;
} else {
//检查电子邮件是否存在
$ query =选择userEmail FROM用户WHERE userEmail ='$ email';
$ result = mysqli_query($ query);
$ count = mysqli_num_rows($ result);
if($ count!= 0){
$ error = true;
$ emailError =提供的电子邮件已被使用。;


//密码验证
if(empty($ pass)){
$ error = true;
$ passError =请输入密码。;
} else if(strlen($ pass)< 6){
$ error = true;
$ passError =密码必须至少有6个字符。;
}

//使用SHA256()密码加密;
$ password = hash('sha256',$ pass);

//如果没有错误,继续注册
if(!$ error){

$ query =INSERT INTO users(userName,userEmail,userPass )VALUES('$ name','$ email','$ password');
$ res = mysqli_query($ query);

if($ res){
$ errTyp =success;
$ errMSG =已成功注册,您现在可以登录;
unset($ name);
unset($ email);
unset($ pass);
} else {
$ errTyp =危险;
$ errMSG =出现问题,请稍后再试...;
}

}


}
?>


解决方案

您需要添加<$ c $如果 $ error 为真,c> else 语句可以回显您的错误消息。



<$ p ($!$ error){
$ query =INSERT INTO users(userName,userEmail,userPass)VALUES($!
$)如果没有错误,继续注册
'$名', '$电子邮件', '$密码');
$ res = mysqli_query($ dbcon,$ query);

if($ res){
$ errTyp =success;
$ errMSG =已成功注册,您现在可以登录;
unset($ name);
unset($ email);
unset($ pass);
} else {
$ errTyp =危险;
$ errMSG =出现问题,请稍后再试...;
}

} else {
//如果有错误,则显示
echo $ nameError。 ''。 $ emailError。 ''。 $ passError;
}

也许可以考虑使用数组来存储错误,字段出现错误,它将以更简单的格式显示。例如,在你的名字验证码中:

  //基本名称验证
if(empty($ name)) {
$ error = true;
$ errorMsgs [] =请输入您的全名。;
} else if(strlen($ name)< 3){
$ error = true;
$ errorMsgs [] =名称必须至少有3个字符。;
} else if(!preg_match(/ ^ [a-zA-Z] + $ /,$ name)){
$ error = true;
$ errorMsgs [] =名称必须包含字母和空格。;
}

//在你的if / else语句中
if(!$ error){
// code here
} else {
foreach($ errorMsgs as $ e){
echo $ e。 < br />;
}
}


It does not show any error output and validate the input field. I don't know what going on here within this code. Hopefully there someone can figure out what happen. Thanks...

here the database connection

<?php

    // this will avoid mysql_connect() deprecation error.
    error_reporting( ~E_DEPRECATED & ~E_NOTICE );
    // but I strongly suggest you to use PDO or MySQLi.

    define('DBHOST', 'localhost');
    define('DBUSER', 'root');
    define('DBPASS', '');
    define('DBNAME', 'loginquestdb');

    $conn = mysqli_connect(DBHOST,DBUSER,DBPASS);
    $dbcon = mysqli_select_db($conn,DBNAME);

    if ( !$conn ) {
        die("Connection failed : " . mysqli_error($conn));
    }

    if ( !$dbcon ) {
        die("Database Connection failed : " . mysqli_error($conn));
    }

here the html code:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Coding Cage - Login & Registration System</title>
<link rel="stylesheet" href="assets/css/bootstrap.min.css" type="text/css"  />
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>

<div class="container">

    <div id="login-form">
    <form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" autocomplete="off">

        <div class="col-md-12">

            <div class="form-group">
                <h2 class="">Sign Up.</h2>
            </div>

            <div class="form-group">
                <hr />
            </div>

            <?php
            if ( isset($errMSG) ) {

                ?>
                <div class="form-group">
                <div class="alert alert-<?php echo ($errTyp=="success") ? "success" : $errTyp; ?>">
                <span class="glyphicon glyphicon-info-sign"></span> <?php echo $errMSG; ?>
                </div>
                </div>
                <?php
            }
            ?>

            <div class="form-group">
                <div class="input-group">
                <span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
                <input type="text" name="name" class="form-control" placeholder="Enter Name" maxlength="50" value="<?php echo $name ?>" />
                </div>
                <span class="text-danger"><?php echo $nameError; ?></span>
            </div>

            <div class="form-group">
                <div class="input-group">
                <span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span></span>
                <input type="email" name="email" class="form-control" placeholder="Enter Your Email" maxlength="40" value="<?php echo $email ?>" />
                </div>
                <span class="text-danger"><?php echo $emailError; ?></span>
            </div>

            <div class="form-group">
                <div class="input-group">
                <span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
                <input type="password" name="pass" class="form-control" placeholder="Enter Password" maxlength="15" />
                </div>
                <span class="text-danger"><?php echo $passError; ?></span>
            </div>

            <div class="form-group">
                <hr />
            </div>

            <div class="form-group">
                <button type="submit" class="btn btn-block btn-primary" name="btn-signup">Sign Up</button>
            </div>

            <div class="form-group">
                <hr />
            </div>

            <div class="form-group">
                <a href="index.php">Sign in Here...</a>
            </div>

        </div>

    </form>
    </div>  

</div>

</body>
</html>
<?php ob_end_flush(); ?>

here the php code:

<?php
    ob_start();
    session_start();
    if( isset($_SESSION['user'])!="" ){
        header("Location: home.php");
    }
    include_once 'dbconnect.php';

    $error = false;

    if ( isset($_POST['btn-signup']) ) {

        // clean user inputs to prevent sql injections
        $name = trim($_POST['name']);
        $name = strip_tags($name);
        $name = htmlspecialchars($name);

        $email = trim($_POST['email']);
        $email = strip_tags($email);
        $email = htmlspecialchars($email);

        $pass = trim($_POST['pass']);
        $pass = strip_tags($pass);
        $pass = htmlspecialchars($pass);

        // basic name validation
        if (empty($name)) {
            $error = true;
            $nameError = "Please enter your full name.";
        } else if (strlen($name) < 3) {
            $error = true;
            $nameError = "Name must have at least 3 characters.";
        } else if (!preg_match("/^[a-zA-Z ]+$/",$name)) {
            $error = true;
            $nameError = "Name must contain alphabets and space.";
        }

        //basic email validation
        if ( !filter_var($email,FILTER_VALIDATE_EMAIL) ) {
            $error = true;
            $emailError = "Please enter valid email address.";
        } else {
            // check email exist or not
            $query = "SELECT userEmail FROM users WHERE userEmail='$email'";
            $result = mysqli_query($query);
            $count = mysqli_num_rows($result);
            if($count!=0){
                $error = true;
                $emailError = "Provided Email is already in use.";
            }
        }
        // password validation
        if (empty($pass)){
            $error = true;
            $passError = "Please enter password.";
        } else if(strlen($pass) < 6) {
            $error = true;
            $passError = "Password must have at least 6 characters.";
        }

        // password encrypt using SHA256();
        $password = hash('sha256', $pass);

        // if there's no error, continue to signup
        if( !$error ) {

            $query = "INSERT INTO users(userName,userEmail,userPass) VALUES('$name','$email','$password')";
            $res = mysqli_query($query);

            if ($res) {
                $errTyp = "success";
                $errMSG = "Successfully registered, you may login now";
                unset($name);
                unset($email);
                unset($pass);
            } else {
                $errTyp = "danger";
                $errMSG = "Something went wrong, try again later...";   
            }   

        }


    }
?>

解决方案

You'll want to add an else statement to echo your error messages if $error is true.

// if there's no error, continue to signup
if( !$error ) {
    $query = "INSERT INTO users(userName,userEmail,userPass) VALUES('$name','$email','$password')";
    $res = mysqli_query($dbcon, $query);

    if ($res) {
        $errTyp = "success";
        $errMSG = "Successfully registered, you may login now";
        unset($name);
        unset($email);
        unset($pass);
    } else {
        $errTyp = "danger";
        $errMSG = "Something went wrong, try again later...";   
    }   

} else {
    // if there's an error, display it
    echo $nameError . ' ' . $emailError . ' ' . $passError;
}

Perhaps consider using an array to store the errors so it doesn't matter which field has an error, it'll display with easier formatting. For example, in your name validation code:

// basic name validation
if (empty($name)) {
    $error = true;
    $errorMsgs[] = "Please enter your full name.";
} else if (strlen($name) < 3) {
    $error = true;
    $errorMsgs[] = "Name must have at least 3 characters.";
} else if (!preg_match("/^[a-zA-Z ]+$/",$name)) {
    $error = true;
    $errorMsgs[] = "Name must contain alphabets and space.";
}

// in your if/else statement
if(!$error){
    // code here
} else {
    foreach($errorMsgs as $e){
        echo $e . "<br />";
    }
}

这篇关于为什么我无法检查我的输入并将数据注册到数据库中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆