PHP / AJAX / Jquery注释表单验证

时间:2012-02-19 22:03:39

标签: php ajax forms validation

我正在基于jquery验证插件(http://docs.jquery.com/Plugins/Validation)创建一个评论表单。我知道javascript很容易被黑客操纵,所以我想知道如何通过php验证,以确保评论表格不会产生大量的垃圾邮件?

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      = 'sdfsadfssfasd@gmail.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com';

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条件以正确验证评论表单以防止垃圾邮件。

1 个答案:

答案 0 :(得分: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.});