2012-02-19 93 views
0

我創建一個基於jQuery開發驗證插件評論形式(http://docs.jquery.com/Plugins/Validation)。我知道JavaScript很容易被黑客操縱,所以我想知道如何通過php進行驗證,以確保評論表單不會產生大量的垃圾郵件?PHP/AJAX/Jquery的評論表單驗證

JS的是直接從驗證插件。 html表單直接來自JS驗證插件頁面。額外的js如下:

<script> 
    $(document).ready(function(){ 
    $("#commentForm").submit(function(){ 
    if($("#commentForm").validate()){ 
     $.ajax({ 
      type: 'POST', 
      url: 'process.php', 
      data: $(this).serialize(), 
      success: function(returnedData){ 
       alert(returnedData); 
      } 
     }); 
    } 
    return false; 
}); 
}); 
    </script> 

<form class="cmxform" id="commentForm" method="POST" action="process.php"> 
    <label for="cname">Name</label> 
    <input id="cname" name="name" size="25" class="required" minlength="2" /> 
    <label for="cemail">E-Mail</label> 
    <input id="cemail" name="email" size="25" class="required email" /> 
    <label for="curl">URL</label> 
    <input id="curl" name="url" size="25" class="url" value="" /> 
    <label for="ccomment">Your comment</label> 
    <textarea id="ccomment" name="comment" cols="22" class="required"></textarea> 
<input class="submit" type="submit" value="Submit"/> 

目前php是相當標準的。不知道如何將驗證與js和ajax集成:

<?php 

$to  = '[email protected]'; 
$subject = 'the subject'; 
$message = 'hello'; 
$headers = 'From: [email protected]'; 

mail($to, $subject, $message, $headers); 

print "Form submitted successfully: <br>Your name is <b>".$_POST['cname']."</b> and your email is <b>".$_POST['email']."</b><br>"; 
?> 

感謝您的任何幫助。有人評論說這是模糊的。爲了澄清:

我知道如何使用PHP來驗證電子郵件長度,不必要的字符,等等。我不知道如何jQuery的驗證插件通過Ajax的工作原理。我需要知道如何配置我的php條件以正確驗證評論表單以防止垃圾郵件。

+0

這是非常寬泛的。但是你可以使用http://php.net/manual/en/function.strlen.php(strlen的)驗證的變量的長度,你可以使用正則表達式http://www.linuxjournal.com/article驗證電子郵件/ 9585。它將採用js和php驗證的組合來防止某人在未通過js驗證的情況下手動提交表單。然後,您可以將json返回到您的前端,或者在驗證失敗時忽略該請求。 – 2012-02-19 22:09:38

+0

我瞭解php驗證的概念。我不明白如何將這些概念與jQuery驗證插件和ajax集成。我已經在上面澄清了。謝謝 – 2012-02-19 22:17:03

+0

我幾乎肯定這兩件事彼此獨立,你應該通過javascript和php驗證它。因爲有些人可以在不使用表單的情況下打你的終端。 – 2012-02-19 22:19:13

回答

1

好吧,你這樣做的方法是非常簡單的。 所以,你有一個提交功能,但在此之前,你實際發送一個請求到PHP文件,你需要驗證輸入。你的代碼到目前爲止是非常合理的,但你需要從validate函數開始。這可能看起來像這樣(在jQuery中)。假設您的輸入字段具有以下ID:#input1,#input2,#input3,#input4。

function validate() 
{ 
    if($('#input1).val()=='' || $('#input2).val()==''|| $('#input3).val()=='' $('#input4).val()=='') return 0; 
    else return 1; 

} 

這將是最基本的驗證方式。如果你不想要jQuery,你可以用docoument.getElementById(老式的方式)替換$('#input1)。如果您還想讓用戶看起來不錯,那麼您可以驗證模糊的每個輸入字段!例如,我們假設用戶關注第一個輸入字段,#input1

$('#input1).focus(function(){change the background color,add a border, or anything you want just to let the users see which input they clicked/tabbed on.}).blur(function(){check if the input is valid and if it's not display a message or anything you want.}); 
+0

嗨,我必須進入並驗證手動輸入jquery如上面的說法嗎?看起來插件本身(jquery.validate.js)通過上面添加的表單自動執行此操作。它只是從插件頁面直接。你也可以使用 – 2012-02-20 03:28:27

+0

。就個人而言,我更喜歡對所有輸入使用更深入的驗證,但如果您只需要基本的東西,jQuery將爲您做到這一點。所以你可以簡單地調用模糊的驗證函數或者如果所有的輸入都有效就提交。如果輸入有效,我喜歡在模糊處顯示綠色'ok',否則顯示紅色x。它看起來不錯,或者至少這是我的想法。儘管如此,這是一個偏好問題。如果你知道你需要什麼樣的驗證,你的選擇很容易。如果你需要更多的幫助,你知道在哪裏找到它!祝你好運 – 2012-02-20 03:37:26

+0

我明白你的意思了,謝謝。我也喜歡使用jquery blur值的想法。我想可能我會使用基本的jQuery驗證,然後使用php進一步驗證。在進行這項工作之前,從來沒有這樣做過。肯定不得不稍後再發布。謝謝 – 2012-02-20 03:45:15