我正在创建一个 jquery ajax 弹出评论表单,但是我在 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 设置为 display:none 在你的 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";
}   
?>
有帮助吗?

解决方案

filter_var() 当电子邮件有效时返回非虚假值,而不是 false. 。去除 !filter_var( 在你的 if():

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

您正在执行里面的代码 if() 什么时候 filter_var() 失败, ,这就是为什么你会得到

电子邮件不正确

对于有效的电子邮件。


我也错过了另一件事,那就是你 分配给 $robotest 而不是将其与空字符串进行比较。您需要使用双等于比较运算符而不是单等于赋值运算符。你的 if() 应该看起来像这样:

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

其他提示

为替代答案,我在我的HTML中设置了一个“HONEY POT”,显示:NONE

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top