为什么这个PHP验证会返回错误消息?

时间:2011-05-23 16:37:04

标签: php validation

这是非常简单的,但我无法弄清楚为什么我经常在这里得到错误消息,它看起来正确并且在其他应用程序中正常工作....这是由于“0”零?它不应该是因为它在它到达任何其他东西之前返回错误,请帮忙!我一直盯着这看着“从树上看不到森林”这一点。

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:support@tradersplatform.com?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中,它显示了传递的字段,带有值,但是我得到了“请填写所有标记为*的字段”错误。

3 个答案:

答案 0 :(得分:2)

!empty($_POST['LeadBlind'])

没有其他方法导致问题

尝试检查它是否为空 否则尝试逐个删除字段以查看问题究竟在哪里

,否则

var_dump($_POST);代码

之后添加<?php

答案 1 :(得分:1)

在此之间:

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

请放一个

print_r($_POST);

并确保您访问数据的所有密钥都正确并已填充。

IE:

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

答案 2 :(得分:0)

!empty($_POST['LeadBlind']

此字段只能为空,因为它是隐藏的,并且您没有为其分配值。

此外,这是非常糟糕的HTML(标签应该关闭),我会在您的表单中设置的每个isset()字段上使用$_POST - 函数。因为如果一个字段没有值并且正在发送表单,则首先在$_POST - 数组中没有条目。