2015-12-11 77 views
-3

我按照上使用Ajax提交表單的教程,[Link]輸入驗證不起作用,除1個驗證

,一切工作正常,如本教程描述。表單提交後,我可以看到所需的驗證,但在我添加另一個驗證後,例如我有一個輸入字段要求全名。我添加了驗證,以檢查該值是否小於3,如果是,則$errors陣列中加入相應的消息。

這裏是目前驗證我有,只檢查場空。

<?php 
require('includes/config.php'); 

$errors   = array();  // array to hold validation errors 
$data   = array();  // array to pass back data 

// validate the variables ====================================================== 
    // if any of these variables don't exist, add an error to our $errors array 

    if (empty($_POST['name1'])) 
     $errors['name1'] = 'Name is required.'; 

    if (strlen($_POST['name1']) < 3) 
     $errors['name1'] = 'Full name is required (both first and last name)'; 

    if (empty($_POST['email'])) 
     $errors['email'] = 'Email is required.'; 

    if (empty($_POST['number1'])) 
     $errors['number1'] = 'Mobile Number is required.'; 

// return a response =========================================================== 

    // if there are any errors in our errors array, return a success boolean of false 
    if (! empty($errors)) { 

     // if there are items in our errors array, return those errors 
     $data['success'] = false; 
     $data['errors'] = $errors; 
    } else { 

     // if there are no errors process our form, then return a message 
     // DO ALL YOUR FORM PROCESSING HERE 


     // show a message of success and provide a true success variable 
     $data['success'] = true; 
     $data['message'] = 'Thank you!'; 
    } 

    // return all our data to an AJAX call 
    echo json_encode($data); 

這一切工作正常,但是當我添加另一個驗證它都失敗。 根本沒有驗證。

看到我在做什麼。

if (empty($_POST['name1'])) 
    $errors['name1'] = 'Name is required.'; 

if (($_POST['name1']) < 3) 
    $errors = 'Full name is required (both first and last name)'; 

加入上述驗證後,所有驗證都失敗。它出什麼問題了?

回答

2

我覺得有語法錯誤:

if (empty($_POST['name1'])) 
    $errors['name1'] = 'Name is required.'; 

if (!empty($_POST['name1']) && strlen($_POST['name1']) < 3) 
    $errors = 'Full name is required (both first and last name)'; 

你只匹配$ _ POST [「名稱1」]與整數值錯誤。 你必須計數字符然後匹配整數。

對於電子郵件驗證:

if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    //Not Valid email! 
} 

手機驗證

$phone = '000-0000-0000'; 

if(!preg_match("/^[0-9]{3}-[0-9]{4}-[0-9]{4}$/", $phone)) { 
    // $phone is not valid 
} 
+2

好了,所以有一個語法錯誤。它是什麼?並解釋它的OP和未來遊客 –

+1

你可以發佈你的代碼 –

+0

請使用檢查後變量:的print_r($ _ POST);檢查number1是否存在。如果可能請在這裏發帖。 –

1

正如維沙爾說,第一個問題是缺乏strlen。另一個問題是,你是直接分配錯誤消息$errors而不是$errors['name1']

+0

哎呀,我錯過了發佈時的問題。 Vishal的解決方案在添加字段名稱之後確實奏效。感謝您指出了這一點 – XeBii