簡體   English   中英

無法拋出錯誤消息

[英]Unable to throw error Message

報名表格

 <!DOCTYPE HTML>
    <html>
   <head>
    <title>Register</title>
   </head>
   <body>
    <form action="" method="POST">
    Name: 
    <input type="text" name="name">
    <br/> <br/>
    Username: 
    <input type="text" name="username">
    <br/> <br/>
    Password:
    <input type="password" name="password">
    <br/> <br/>

    Email: 
    <input type="text" name="email">
    <br/> <br/>
    <input type="submit" name="submit" value="Register">
</form>
</body>
    </html>
  <?php
 require('connect.php');
  require('validation.php');
    $name = $_POST['name'];
  $username = $_POST['username'];
       $password = $_POST['password'];

  $email = $_POST['email'];

     if(isset($_POST["submit"])){
       if($query = mysqli_query($connect,"INSERT INTO users 
     (`id`,`name`,`username`, `password`, `email`) VALUES ('','".$name."', 
      '".$username."', '".$password."', '".$email."')")){
          echo "Success";
      }else{
         echo "Failure" . mysqli_error($connect);
         }
           }
   ?>

validation.php

     <?php
      // define variables and set to empty values
      $nameErr = $emailErr = $userErr = $passwordErr = "";
      $name =  $email = $username =$password = "";


       if (isset($_POST['submit'])) {
        if (empty($_POST["name"])) {
         $nameErr = "Name is required";
       } else {
        $name = test_input($_POST["name"]);
        // check if name only contains letters and whitespace
        if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
       $nameErr = "Only letters and white space allowed"; 
       }
        }

        if (empty($_POST["email"])) {
         $emailErr = "Email is required";
         } else {
       $email = test_input($_POST["email"]);
         // check if e-mail address is well-formed
         if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
           $emailErr = "Invalid email format"; 
         }
         }

        if (empty($_POST["username"])) {
       $userErr = "Username is required";
       } else {
        $username = test_input($_POST["username"]);
          }

        if (empty($_POST["password"])) {
         $passwordErr = "Password is required";
       } else {
       $password= test_input($_POST["password"]);
          }

     }

      function test_input($data) {
       $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
      }
        ?>

connect.php

    <?php
     $connect = mysqli_connect("localhost", "root", "","php_forum") 
    or die("Error " . mysqli_error($connect)); 
       ?>

我正在使用四個輸入來開發一個簡單的注冊,即名稱,用戶名,密碼,電子郵件。當用戶填寫表格並單擊提交按鈕時,所有填寫的數據都應保存在數據庫中,這在我的數據庫中可以正常工作情況下,但是當用戶不會填寫任何數據並且如果用戶只是單擊提交按鈕時,錯誤消息應該顯示為“所有字段都是必需的”,但是在我的情況下,即使我單擊提交按鈕而未輸入任何值,消息我越來越成功,所有空值都將存儲在數據庫中,這是不應該發生的,我的輸出應該是:如果我填寫表格n單擊提交按鈕,那么所有數據都應該存儲在數據庫中,如果我單擊提交按鈕如果不填寫任何值,則錯誤應拋出“要填寫的所有字段”,並且數據庫中不應存儲任何空值,請任何人都可以指導我應進行哪些更改,以便獲得所需的輸出。

你做

require('validation.php');

設置和檢查很多變量,例如

 $name = test_input($_POST["name"]);
 $nameErr = "Only letters and white space allowed"; 

從require返回並用原始發布的值覆蓋$ name,而對$ nameErr不做任何事情

 $name = $_POST['name'];

要求后檢查錯誤

例如

require('validation.php');
$lsError = $nameErr . $emailErr . $userErr . $passwordErr;
if(trim($lsError) != '') {
    echo $lsError ."<BR>";
    echo "ALL FIELDS ARE NECESSARY";
}
else {
   //rest of your insert
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM