我正在基于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条件以正确验证评论表单以防止垃圾邮件。
答案 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.});