用于评论表单的蜜罐PHP

用于评论表单的蜜罐PHP,php,forms,validation,comments,honeypot,Php,Forms,Validation,Comments,Honeypot,我正在创建一个jqueryajax弹出评论表单,但是我在用php设置我的“蜜罐”时遇到了一个问题 蜜罐($robotest)不起作用;相反,脚本返回“电子邮件不正确”。有人能指出我的错误吗?多谢各位 html表单为: <form class="cmxform" id="commentForm" method="POST" action=""> <p> <label for="cname">Name</label> <

我正在创建一个jqueryajax弹出评论表单,但是我在用php设置我的“蜜罐”时遇到了一个问题

蜜罐($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中无):


在电子邮件有效时返回非假值,而不是
假值。删除
if()
中的
filter\u变量(
之前的代码):

filter\u var()

电子邮件不正确

对于有效的电子邮件


我还遗漏了另一个事实,即您将赋值给
$robotest
,而不是将其与空字符串进行比较。您需要使用双等于比较运算符,而不是单等于赋值运算符。您的
if()
应该如下所示:

if((filter_var($email, FILTER_VALIDATE_EMAIL)) && ($robotest == "")) 

对于另一个答案,我在html中设置了一个“蜜罐”输入,显示为:none

<input type="text" name="honeypot" id="honeypot" style="display:none;"/>


跟踪您的逻辑…
var_dump
分别跟踪每个条件以跟踪您的代码并找到问题蜜罐($robotest)存在问题。添加&($robotest=“”)会导致脚本返回不正确的电子邮件。非常感谢。我想我没有完全理解筛选器_var()。从if语句中删除了!但出于某种原因,它仍然返回“Email is not correct.”还有什么我可能遗漏的吗?谢谢@JamWaffles。我将运算符更改为双等号,但由于某种原因它仍然不起作用。我编辑了上面的php,使其为最新的。您仍然拥有
之前的
筛选器_var()
。您是否在实际代码中删除了它?因为它仍然存在于您编辑的文章中。它使用进行了正确的验证!。没有使用进行了错误的验证!。我无法理解为什么?
if(!filter_var())
表示“如果
filter_var()
返回非真(即假)值,请执行
if()
中的任何内容。”.The
反转
过滤器变量()的布尔值,因此当它返回
false
时,
if()
将其视为返回
true
,因此可以执行if。感谢您的输入。我的蜜罐的css也设置为显示:无。
if((filter_var($email, FILTER_VALIDATE_EMAIL)) && ($robotest == "")) 
<input type="text" name="honeypot" id="honeypot" style="display:none;"/>