简体   繁体   English

提交表单后显示错误消息

[英]display error message after submitting a form

i have a registration form in which i have placed a check on email id and status so that a person cannot signup again with the same email. 我有一份注册表,其中已检查了电子邮件ID和状态,以使一个人无法再次使用同一电子邮件进行注册。 Both the form and script are on a single page and the page is in .php format. 表单和脚本都在单个页面上,并且页面均为.php格式。 The problem is that although the check works fine but i am not able to display an error message in front of email box. 问题是,尽管检查工作正常,但我无法在电子邮件框前显示错误消息。 would appreciate if someone could help me 如果有人可以帮助我将不胜感激

<form role="form" action="" autocomplete="off" method="POST">

    <div class="input-group">
        <span class="input-group-addon"><i class="fa fa-user"></i></span>
            <input type="name" class="form-control" name="name" placeholder="Company Name" required>
    </div>
    <span class="help-block"></span>

    <div class="input-group">
        <span class="input-group-addon"><i class="fa fa-user"></i></span>
            <input type="email" class="form-control" name="email" placeholder="email address" required>
    </div>
    <span><?php echo $errormsg;?></span>

    <div class="input-group">
        <span class="input-group-addon"><i class="fa fa-lock"></i></span>
            <input  type="password" class="form-control" name="password" placeholder="Password" required>
    </div>
    <span class="help-block"></span>

    <div class="input-group">
        <span class="input-group-addon"><i class="fa fa-user"></i></span>
            <input type="tel" id="tel" class="form-control" name="phoneno" pattern="\d{10}" placeholder="Please enter a ten digit phone number" required />
    </div>
    <span class="help-block"></span>
    <input class="form-control" value="" type="hidden" name="status">

    <button class="btn btn-lg btn-primary btn-block" name="submit" type="submit">Sign Up</button>

</form>

<?php
$con=mysqli_connect("localhost","root","","db");
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// escape variables for security
$name = mysqli_real_escape_string($con, $_POST['name']);
$email = mysqli_real_escape_string($con, $_POST['email']);
$password = mysqli_real_escape_string($con, $_POST['password']);
$phoneno = mysqli_real_escape_string($con, $_POST['phoneno']);
$status = mysqli_real_escape_string($con, $_POST['status']);

$sql = "SELECT * FROM register WHERE email='".$email."' AND status='1'";
$result = mysqli_query($con, $sql); 
if (mysqli_num_rows($result) > 0)
{
    $errormsg="email already exist";
}
else
{
    $sql="INSERT INTO register (name,email,password,phoneno,status) VALUES ('$name','$email','$password','$phoneno','1')";
    if (!mysqli_query($con,$sql)) 
    {
        die('Error: ' . mysqli_error($con));
    }
    exit;
    mysqli_close($con);
}
?>

If all code is in single file then you shift the PHP code above the html code, why the error is not showing the html is rendering first before executing the PHP code? 如果所有代码都在单个文件中,则将PHP代码移到html代码上方,为什么错误没有显示html在执行PHP代码之前先呈现? ie: 即:

<?php
$con=mysqli_connect("localhost","root","","db");
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// escape variables for security
$name = mysqli_real_escape_string($con, $_POST['name']);
$email = mysqli_real_escape_string($con, $_POST['email']);
$password = mysqli_real_escape_string($con, $_POST['password']);
$phoneno = mysqli_real_escape_string($con, $_POST['phoneno']);
$status = mysqli_real_escape_string($con, $_POST['status']);

$sql = "SELECT * FROM register WHERE email='".$email."' AND status='1'";
$result = mysqli_query($con, $sql); 
if (mysqli_num_rows($result) > 0)
    {
        $errormsg="email already exist";
    }
else{
$sql="INSERT INTO register (name,email,password,phoneno,status) VALUES ('$name','$email','$password','$phoneno','1')";
        if (!mysqli_query($con,$sql)) 
            {
                die('Error: ' . mysqli_error($con));
            }
        exit;
mysqli_close($con);
}
?>
<form role="form" action="" autocomplete="off" method="POST">

    <div class="input-group">
        <span class="input-group-addon"><i class="fa fa-user"></i></span>
            <input type="name" class="form-control" name="name" placeholder="Company Name" required>
    </div>
    <span class="help-block"></span>

    <div class="input-group">
        <span class="input-group-addon"><i class="fa fa-user"></i></span>
            <input type="email" class="form-control" name="email" placeholder="email address" required>
    </div>
    <?php echo $errormsg;?></span>

    <div class="input-group">
        <span class="input-group-addon"><i class="fa fa-lock"></i></span>
            <input  type="password" class="form-control" name="password" placeholder="Password" required>
    </div>
    <span class="help-block"></span>

    <div class="input-group">
        <span class="input-group-addon"><i class="fa fa-user"></i></span>
            <input type="tel" id="tel" class="form-control" name="phoneno" pattern="\d{10}" placeholder="Please enter a ten digit phone number" required />
    </div>
    <span class="help-block"></span>
    <input class="form-control" value="" type="hidden" name="status">

    <button class="btn btn-lg btn-primary btn-block" name="submit" type="submit">Sign Up</button>

</form>

You should set/initialize the error container above, and make those checking above the html first. 您应该设置/初始化上面的错误容器,并首先在html上方进行检查。

And don't forget to use prepared statements! 并且不要忘记使用准备好的语句!

<?php

$errormsg = '';
$con = mysqli_connect("localhost","root","","db_name");
// Check connection
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$name = $_POST['name'];
$email =  $_POST['email'];
$password = $_POST['password'];
$phoneno = $_POST['phoneno'];
$status = $_POST['status'];

$sql = "SELECT * FROM register WHERE email = ? AND status = '1' ";
$check = $con->prepare($sql);
$check->bind_param('s', $email);
$check->execute();

if ($check->num_rows > 0) {
    $errormsg = "email already exist";
}
else{

    $sql = "INSERT INTO register (name,email,password,phoneno,status) VALUES (?, ?, ?, ?, '1')";
    $insert = $con->prepare($sql);
    $insert->bind_param('ssss', $name, $email, $password, $phoneno);
    $insert->execute();

}
?>
<form role="form" action="" autocomplete="off" method="POST">

    <div class="input-group">
        <span class="input-group-addon"><i class="fa fa-user"></i></span>
            <input type="name" class="form-control" name="name" placeholder="Company Name" required>
    </div>
    <span class="help-block"></span>

    <div class="input-group">
        <span class="input-group-addon"><i class="fa fa-user"></i></span>
            <input type="email" class="form-control" name="email" placeholder="email address" required>
    </div>
    <?php echo $errormsg; ?></span>

    <div class="input-group">
        <span class="input-group-addon"><i class="fa fa-lock"></i></span>
            <input  type="password" class="form-control" name="password" placeholder="Password" required>
    </div>
    <span class="help-block"></span>

    <div class="input-group">
        <span class="input-group-addon"><i class="fa fa-user"></i></span>
            <input type="tel" id="tel" class="form-control" name="phoneno" pattern="\d{10}" placeholder="Please enter a ten digit phone number" required />
    </div>
    <span class="help-block"></span>
    <input class="form-control" value="" type="hidden" name="status">

    <button class="btn btn-lg btn-primary btn-block" name="submit" type="submit">Sign Up</button>

</form>
<div class="input-group">
        <span class="input-group-addon"><i class="fa fa-user"></i></span>
            <input type="email" class="form-control" name="email" placeholder="email address" required>
      <br><span><?php echo $errormsg;?></span>
    </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM