我正在创建一个jquery ajax弹出注释表单,但我在php中设置我的“honeypot”的方式有问题。
蜜罐($ robotest)无效;而是脚本返回“电子邮件不正确”。任何人都能指出我的错误吗?谢谢
html表单是:
<form class="cmxform" id="commentForm" method="POST" action="">
<p>
<label for="cname">Name</label>
<input id="cname" name="name" size="25" class="required" minlength="2" />
</p>
<p>
<label for="cemail">E-Mail</label>
<input id="cemail" name="email" size="25" class="required email" />
</p>
<p>
<label for="curl">URL</label>
<input id="curl" name="url" size="25" class="url" value="" />
</p>
<p>
<label for="ccomment">Your comment</label>
<textarea id="ccomment" name="comment" cols="22" class="required"></textarea>
</p>
<p class="robotic" id="pot">
<label>Please leave this blank:</label>
<input name="robotest" type="text" id="robotest" class="robotest" />
</p>
<p>
<input class="submit" type="submit" value="Submit"/>
</p>
编辑:
感谢@JamWaffles的支持。以下是实现蜜罐的正确方法。 (正如Kamalo所说,你想要将'robotest'的id设置为显示:你的css中没有:)
<?php
$robotest = $_POST['robotest'];
$email = $_POST['email'];
if((!filter_var($email, FILTER_VALIDATE_EMAIL)) && ($robotest == "")) {
print "E-mail is correct";
$to = 'asdfdsafasdfsda@gmail.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com';
mail($to, $subject, $message, $headers);
} else {
print "E-mail is not correct";
}
?>
答案 0 :(得分:5)
filter_var()
会返回非虚假值,而不是false
。移除!
中的filter_var(
之前的if()
:
if((filter_var($email, FILTER_VALIDATE_EMAIL)) && ($robotest = ""))
当if()
失败时,您正在filter_var()
内执行代码,这就是您获得
电子邮件不正确
有效的电子邮件。
我错过的其他事情是你分配给 $robotest
而不是将它与空字符串进行比较。您需要使用double equals比较运算符而不是单个equals赋值运算符。您的if()
应如下所示:
if((filter_var($email, FILTER_VALIDATE_EMAIL)) && ($robotest == ""))
答案 1 :(得分:4)
对于另一个答案,我在我的html中设置了一个“蜜罐”输入,显示:无
<input type="text" name="honeypot" id="honeypot" style="display:none;"/>