2015-08-08 86 views
0

我的表單仍然給我一個「註冊成功!」並將數據存儲在mysql中,即使它不是有效數據並且爲空。然後顯示「註冊成功」後顯示錯誤。即使數據無效,表單仍然會接受數據

它應該運行的方式是,當輸入無效或爲空時,它將不會存儲在數據庫中,並且不會提示「註冊成功!」。 我把php代碼放在與html相同的文件中,具體位於html代碼的頂部。

PHP

<?php 
mysql_connect("localhost","root",""); 
mysql_select_db("registration"); 

    if (isset($_POST['register'])){ 
      $fname = $_POST['first_name']; 
      $lname = $_POST['last_name']; 
      $email = $_POST['email']; 
      $pword = $_POST['password_verify']; 

     if($_POST){ 
      $errors = array(); 

      if(empty($_POST['first_name'])){ 
       $errors['first_name1'] = "This field cannot be empty"; 
      } 
      if (empty($_POST['last_name'])){ 
       $errors['last_name1'] = "Please enter your name last name."; 
       } 
      if (empty($_POST['email'])){ 
       $errors['email1'] = "Please enter email address."; 
       } 
      if (empty($_POST['password'])){ 
       $errors['password1'] = "Please enter password."; 
       } 
      if (empty($_POST['password_verify'])){ 
       $errors['password_verify1'] = "Please enter password."; 

       } 
      if (strlen($_POST['password']) < 6){ 
       $errors['password2'] = 'Your password must be at least 6 characters'; 
       } 
      if ($_POST['password'] != $_POST['password_verify']){ 
       $errors['password_verify2'] = 'Your passwords do not match.'; 
       } 

      $check_email = "select * from customer_info where Email='$email'"; 
      $run = mysql_query($check_email); 

      if (mysql_num_rows($run) >0){ 
       $errors['email2'] = 'Email already exists.'; 
      } 
      $query = "insert into customer_info (First_Name,Last_Name,Email, Password) values ('$fname', '$lname', '$email', '$pword')"; 

     if(mysql_query($query)){ 
      echo "<script>alert('Registration Successful!')</script>"; 
      } 
     } 
    }    
?> 
+0

你在哪顯示/作用$ errors數組? – jeff

+1

**使用deprcated'mysql_ *'API停止**。使用'mysqli_ *'或'PDO'準備好語句。 – Jens

回答

0

您應此語句前把狀態

$query = "insert into customer_info (First_Name,Last_Name,Email, Password) values ('$fname', '$lname', '$email', '$pword')"; 

它應該是:

if(count($errors)>0){ 
    echo "<script>alert('Error!')</script>"; 
} else { 
    $query = "insert into customer_info (First_Name,Last_Name,Email, Password) values ('$fname', '$lname', '$email', '$pword')"; 
    if(mysql_query($query)){ 
      echo "<script>alert('Registration Successful!')</script>"; 
      } 
     } 
} 
0

試試這個:

if(!isset($error)){ 
    $query = "insert into customer_info (First_Name,Last_Name,Email, Password) values ('$fname', '$lname', '$email', '$pword')"; 

    if(mysql_query($query)){ 
     echo "<script>alert('Registration Successful!')</script>"; 
     } 

Anddd有人打我>。 < xD 我也建議避免使用mysql_ *函數,因爲它們已被棄用。嘗試使用mysqli_ *或預處理語句:

http://php.net/manual/en/pdo.prepared-statements.php

http://www.w3schools.com/php/php_mysql_prepared_statements.asp

0

之前將數據插入到數據庫中。請檢查$error數組是否爲空。如果數組爲空,則表示您的數據有效,否則無效。

if(empty($errors)) 
{ 
// insert into database and alert('Registration successful'); 
} 
else 
{ 
// alert('Error'); 
} 
相關問題