在注册表单的顶部显示注册页面的结果

时间:2017-04-03 08:40:04

标签: php forms

我对编码知之甚少。 这与我正在创建的注册表有关。我创建了表单。它将表单添加到数据库中。但是它希望它显示结果,例如 - '密码不匹配,请再试一次'在表格之上。怎么做到的? 提前致谢

这是我的代码:

<?php

$conn = mysqli_connect("localhost","root","");
if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
mysqli_select_db($conn, 'registration');


    if(isset($_POST['submitbutton'])){

        if ($_POST['password'] == $_POST['confirm_password']) {
            $email = mysqli_real_escape_string($conn, $_POST['email']);
            $password = mysqli_real_escape_string($conn, $_POST['password']);
            $gender = mysqli_real_escape_string($conn, $_POST['gender']);
            $fname = mysqli_real_escape_string($conn, $_POST['fname']);
            $lname = mysqli_real_escape_string($conn, $_POST['lname']);
            $firm = mysqli_real_escape_string($conn, $_POST['firm']);

            $check_email_exists = mysqli_query($conn, "SELECT email FROM users WHERE email = '$email'");
            $count = mysqli_num_rows($check_email_exists);
            if ($count == 0) {
                $sql = "INSERT INTO users(email, password, gender, fname, lname, firm) VALUES('$email', '$password', '$gender', '$fname', '$lname', '$firm')";

                if(mysqli_query($conn, $sql)){
                    echo "Records added successfully.";
                } else{
                    echo "ERROR: Could not able to execute $sql. " . mysqli_error($conn);
                }

                // close connection
                mysqli_close($conn);
            } else {
                die('Email exists, Please use a different email');
            }
        }
        else {
            die('Passwords not matching, please try again');
        }
    }

这里是我的HTML

<div class="registration-container">
    <div class="registrationpage-heading">
        <h2>Kostenlos und ohne Installation testen</h2>
        <p>Nutzen Sie den kostenlosen Funktionumfang von bmgenerator zeitlich uneingeschränkt. Weder Bankdaten noch Kreditkarte notwendig.</p>
    </div>

    <div class="user-login">
        <form class="login-form" action="user_login.php" method="post">
            <input required type="email" name="email" id="user_email" style="color:#888" size="35" value="E-mail" 
            onfocus="if(this.value==this.defaultValue)this.value=''"    
            onblur="if(this.value=='')this.value=this.defaultValue" ><br><br>

            <input required type="password" name="password" id="user_password" style="color:#888" size="35" placeholder="Passwort"
            onfocus="if(this.value==this.defaultValue)this.value=''"    
            onblur="if(this.value=='')this.value=this.defaultValue" ><br><br>

            <input required type="password" name="confirm_password" id="user_confirm_password" style="color:#888" size="35" placeholder="Passwort wiederholen" 
            onfocus="if(this.value==this.defaultValue)this.value=''"    
            onblur="if(this.value=='')this.value=this.defaultValue" ><br><br>

            <select name="gender">
            <option>Herr</option>
            <option>Frau </option>
            </select><br><br>

            <input required type="text" name="fname" id="user_firstname" style="color:#888" size="35" placeholder="Vorname" 
            onfocus="if(this.value==this.defaultValue)this.value=''"    
            onblur="if(this.value=='')this.value=this.defaultValue" ><br><br>

            <input required type="text" name="lname" id="user_lastname" style="color:#888" size="35" placeholder="Nachname" 
            onfocus="if(this.value==this.defaultValue)this.value=''"    
            onblur="if(this.value=='')this.value=this.defaultValue" ><br><br>

            <input required type="text" name="firm" id="user_companyname" style="color:#888" size="35" placeholder="Firmenname" 
            onfocus="if(this.value==this.defaultValue)this.value=''"    
            onblur="if(this.value=='')this.value=this.defaultValue" ><br><br>

            <input type="submit" name="submitbutton" id="submit" value="Kostenlos registrieren">
        </form>
    </div>

    <div class="register-terms">
        <p>Mit der Registrierung stimmen Sie den Datenschutzbestimmungen und den AGB zu.</p>
    </div>
</div>

3 个答案:

答案 0 :(得分:0)

在上面的场景中,使用

提交表单页面
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">       

但是将注册html改为php文件

<?php    
   if(isset($_POST['submitbutton'])){
      //perform validation, display error if any    
   }    
?>    

如果你想采用模块化方法,那么在提交包含类文件后使用具有验证的类,注册方法并使用方法

答案 1 :(得分:0)

对于每条错误消息,请创建变量$message="Password not matching...",然后在<div class="user-login">之后添加:

<?php echo "<p>$message</p>"; ?>

请记住创建一个空白$message=""。 希望它有所帮助。

答案 2 :(得分:0)

首先,不建议将表单和处理器页面放在同一页面上,以通过刷新使冗余插入无效。但是,在处理器部分中,您必须在流程结束后使用任何重定向方式,在代码die()echo中应使用带有预先指定消息的参数的重定向替换。例如,您的处理器中有四个端点,因此您的代码应如下所示:

<?php

$conn = mysqli_connect("localhost","root","");
if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
mysqli_select_db($conn, 'registration');


    if(isset($_POST['submitbutton'])){

        if ($_POST['password'] == $_POST['confirm_password']) {
            $email = mysqli_real_escape_string($conn, $_POST['email']);
            $password = mysqli_real_escape_string($conn, $_POST['password']);
            $gender = mysqli_real_escape_string($conn, $_POST['gender']);
            $fname = mysqli_real_escape_string($conn, $_POST['fname']);
            $lname = mysqli_real_escape_string($conn, $_POST['lname']);
            $firm = mysqli_real_escape_string($conn, $_POST['firm']);

            $check_email_exists = mysqli_query($conn, "SELECT email FROM users WHERE email = '$email'");
            $count = mysqli_num_rows($check_email_exists);
            if ($count == 0) {
                $sql = "INSERT INTO users(email, password, gender, fname, lname, firm) VALUES('$email', '$password', '$gender', '$fname', '$lname', '$firm')";

                if(mysqli_query($conn, $sql)){
                    header("Location: user_login.php?msg=1");
                    exit();
                } else{
                    header("Location: user_login.php?msg=2");
                    exit();
                }

                // close connection
                mysqli_close($conn);
            } else {
                header("Location: user_login.php?msg=3");
                exit();
            }
        }
        else {
            header("Location: user_login.php?msg=4");
            exit();
        }
    }

$msg = [
  "Records added successfully.",
   "SQL Error",
   "Email exists, Please use a different email",
   "Passwords not matching, please try again"
];

if (isset($_GET['msg']) && isset($msg[($_GET['msg']-1)])){
 $message = $msg[($_GET['msg']-1)];
}

// In your form
....
</div>
 <?php if (isset($message)): ?>
 <div class="message"><?=$message;?></div>
<?php endif; ?>
    <div class="user-login">
        <form class="login-form....