【问题标题】:PHP / AJAX / Jquery Comment Form ValidationPHP / AJAX / Jquery 评论表单验证
【发布时间】:2012-02-19 22:03:39
【问题描述】:

我正在创建一个基于 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 条件以正确验证评论表单以防止垃圾邮件。

【问题讨论】:

  • 这很模糊。但是您可以使用php.net/manual/en/function.strlen.php (strlen) 验证变量的长度,您可以使用正则表达式linuxjournal.com/article/9585 验证电子邮件。它将结合使用 js 和 php 验证来防止有人在未通过您的 js 验证的情况下手动提交表单。然后,您可以将 json 返回到您的前端,或者如果验证失败则忽略该请求。
  • 我了解php验证的概念。我不明白如何将这些概念与 jquery 验证插件和 ajax 集成。我上面已经澄清了。谢谢
  • 我几乎肯定这两件事是相互独立发生的,你应该通过 javascript 和 php 来验证它。因为有些人可以在根本不使用您的表单的情况下击中您的端点。

标签: php ajax forms validation


【解决方案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,可以将 $('#input1) 替换为 docoument.getElementById(老式方式)。如果您还想让它对用户来说看起来不错,您可以在模糊上验证每个输入字段! 例如,假设用户关注第一个输入字段,#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.});

【讨论】:

  • 您好,我是否必须按照您上面所说的那样手动验证 jquery 的输入?似乎插件本身(jquery.validate.js)通过我上面添加的表单自动执行此操作。它直接来自插件页面。
  • 你可以使用任何一个。就个人而言,我更喜欢对所有输入使用更深入的验证,但如果您只需要基本的东西,jQuery 会为您完成。因此,如果所有输入都有效,您可以简单地调用模糊或提交的验证函数。如果输入有效,我喜欢在模糊上显示绿色“ok”检查,否则显示红色 x。它看起来不错,或者至少我是这么认为的。尽管如此,这是一个偏好问题。如果您知道需要什么样的验证,那么您的选择就很容易了。如果您需要更多帮助,您知道在哪里可以找到它!祝你好运
  • 我明白你的意思了,谢谢。我也喜欢使用 jquery 模糊值的想法。我想我可能会使用基本的 jquery 验证,然后使用 php 进一步验证。以前从未这样做过,所以工作正在进行中。以后一定要在这里进一步发帖。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
  • 2016-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多