2012-02-25 53 views
2

我正在创建一个jQuery ajax弹出评论窗体,但我有一个问题,我在PHP中设置我的“蜜罐”。蜜罐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无):

<?php 
$robotest = $_POST['robotest']; 
$email = $_POST['email']; 
if((!filter_var($email, FILTER_VALIDATE_EMAIL)) && ($robotest == "")) { 
    print "E-mail is correct";  
    $to  = '[email protected]'; 
    $subject = 'the subject'; 
    $message = 'hello'; 
    $headers = 'From: [email protected]';  
    mail($to, $subject, $message, $headers);   
} else { 
    print "E-mail is not correct"; 
} 
?> 
+0

跟踪你的逻辑...'var_dump'每个条件分别跟踪你的代码并找到问题 – 2012-02-25 20:26:16

+0

问题在于蜜罐($ robotest)。添加&&($ robotest =“”)会导致脚本返回电子邮件不正确。谢谢 – 2012-02-25 21:03:45

回答

5

filter_var()当电子邮件是有效的,而不是false返回一个非falsy值。在if()删除filter_var(!

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

你执行代码的if()内部时filter_var()失败,这就是为什么你要

电子邮件是不正确

有效的电子邮件。


别的东西,我错过了太多是你比较这对一个空字符串赋值给$robotest,而不是事实。您需要使用双等号比较运算符而不是单个等号赋值运算符。你if()应该是这样的:

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

非常感谢。猜猜我没有完全理解filter_var()。删除了!来自if语句,但由于某种原因它仍然返回“电子邮件不正确”。还有什么我可能会错过的? – 2012-02-25 20:58:28

+1

请参阅我的编辑。 – Bojangles 2012-02-25 21:19:58

+0

谢谢@JamWaffles。我将操作员更改为两倍,但仍然因为某种原因无法使用。我编辑了上面的php,以便它是最新的。 – 2012-02-25 21:30:50

4

对于备选答案,我成立了一个“蜜罐”在我的HTML与显示输入:无

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

感谢您的意见。我的蜜罐的css也设置为显示:无。 – 2012-02-25 21:00:24