2012-02-19 90 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