2011-05-23 56 views
1

这是愚蠢的简单,但我不明白为什么我经常在这里得到错误味精,它看起来是正确的,并在其他应用程序中正常工作....这是由于“0”零?它不应该是因为它在返回到其他任何东西之前返回错误,请帮助!一直盯着这个很长的时间来说,“看不到树林里的森林”。为什么这个PHP验证返回错误消息?

PHP

<?php 
    if(empty($_POST['Contact0FirstName']) || empty($_POST['Contact0LastName']) || 
    empty($_POST['Contact0Email']) || empty($_POST['Contact0Phone1']) || 
    empty($_POST['CaptchaInput']) || !empty($_POST['LeadBlind'])) { 
echo "Please fill out all fields marked *"; 
die(); 
} else { 

//curl stuff 
} 
?> 

和形式

<form id="Lead" method="post" action="PHP/Lead.php" accept-charset="UTF-8"> 


       <ul id="LeadForm"> 
        <li>*required field</li> 
        <li> 
         <input type="hidden" name="LeadBlind" id="LeadBlind"> 
         <label for="Contact0FirstName">1| First Name*</label> 
         <label for="Contact0LastName">2 | Last Name*</label> 
         <label for="Contact0Email">3 | Email*</label> 
        </li> 
        <li> 
         <input type="text" name="Contact0FirstName" id="Contact0FirstName"> 
         <input type="text" name="Contact0LastName" id="Contact0LastName"> 
         <input type="text" name="Contact0Email" id="Contact0Email"> 
        </li> 

        <li> 
         <label for="Contact0Phone1">4| Daytime Phone*</label> 
         <label for="Contact0Phone2">5| Evening Phone</label> 
         <label for="CaptchaInput">6| Please enter the code</label> 
        </li> 
        <li> 
         <input type="text" name="Contact0Phone1" id="Contact0Phone1"> 
         <input type="text" name="Contact0Phone2" id="Contact0Phone2"> 
         <input type="text" class="numbers" name="Captcha" id="Captcha" value="" readonly> 
         <input type="text" class="numbers" name="CaptchaInput" id="CaptchaInput" size="6" maxlength="6"> 
        </li> 
        <li> 
         <input type="submit" id="LeadSend" value="Try It Now!"> 
         <span id="processing">Submitting Your Request</span> 
        </li> 

        <li class="text">You will get 30 days of NinjaTrader + Rithmic (the data feed) to experience how trading should really be.</li> 
        <li class="text"><a href="mailto:[email protected]?subject=Trader's Platform Support Request">Email Support</a> or call 800 771 6748 (Optimus Trading Group)</li> 
       </ul> 
       <div class="clear"></div> 
      </form> 

在Firebug,它显示领域获得通过,具有价值,但我得到“请填写所有标有*”的错误回。

回答

1

之间。这里:

<?php 
     if(empty($_POST['Contact0FirstName']) ... 

请把

print_r($_POST); 

,并确保所有的按键,你正在访问来自数据是正确的,填充。

IE:

<?php 
print_r($_POST); 
if(empty($_POST['Contact0FirstName']) ... 
+0

我把print_r($ _ POST);并返回萤火虫阵列 ( ) 请填写标记为* – 2011-05-23 17:00:36

+0

的所有字段您可以在firebug中查看它,但只是在实际运行代码的问题页面上查看源代码,您会看到一个数组键(表单键)和值......匹配起来,看看你是否有拼写错误。 – 2011-05-23 21:24:42

0
!empty($_POST['LeadBlind'] 

此字段只能是空的,因为它是隐藏的,你没有赋值给它。此外,这是非常糟糕的HTML(标签应该关闭),我会使用$_POST-功能在您的表格中设置的每个$_POST-功能。因为如果某个字段没有值并且表单正在发送,则首先排除$_POST-阵列中的条目。

+1

不错,同样的想法,Facebook放慢了我发布的第一个= P – SAFAD 2011-05-23 16:45:23

+0

我使用'LeadBlind'来“尝试”和检测僵尸,因为它是一个人类不会看到的隐藏领域,所以如果一个机器人填充它,然后它有一个价值 - 它失败了。 – 2011-05-23 16:54:12

+0

博特会填充隐藏字段? – 2011-05-23 17:54:08

2
!empty($_POST['LeadBlind']) 

闲来无事导致问题

尝试使检查其空 别的尝试删除一个接一个领域,看看问题究竟出

否则

var_dump($_POST);<?php标签

+0

我在第二行中就像上面那样,它在第二行返回了一个Parse Error。我有“LeadBlind”来尝试和检测机器人,它是一个隐藏的输入,如果一个机器人填充它应该返回和错误。人们不会看到它,因此不应该填写它。我错了吗? – 2011-05-23 17:02:47

+0

什么是你的PHP信息,你可能正在使用过时的版本(4)或其他东西,或者你编译错误,尝试做phpinfo();并将版本退回 – SAFAD 2011-05-24 08:12:22