为什么我无法检查我的输入并将数据注册到数据库中? [英] Why i can't check my input and register my data into database?
本文介绍了为什么我无法检查我的输入并将数据注册到数据库中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这里的数据库连接
< 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屋!
查看全文