Почему эта проверка PHP возвращает сообщение об ошибке?

#php #validation

#php #проверка

Вопрос:

Это глупо просто, но я не могу понять, почему я постоянно получаю сообщение об ошибке здесь, это выглядит правильно и работает правильно в других applications….is это из-за нулей «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 показано, что поля передаются со значением, но я получаю сообщение об ошибке «Пожалуйста, заполните все поля, отмеченные *».

Ответ №1:

 !empty($_POST['LeadBlind'])
  

ничто другое не приводит к проблеме

попробуйте сделать так, чтобы проверить, пусто ли оно, иначе попробуйте удалять поля одно за другим, чтобы увидеть, в чем именно проблема

в противном случае

добавить тег var_dump($_POST); after <?php

Комментарии:

1. Я ввел это точно так же, как указано выше, во вторую строку, и она вернула ошибку синтаксического анализа в строке 2. У меня есть «LeadBlind», чтобы попытаться обнаружить ботов, это скрытый ввод, который, если бот заполняет, он должен возвращать и ошибка. Люди этого не увидят, и, следовательно, не должны его заполнять. Я здесь не прав?

2. какова ваша информация о php, возможно, вы используете устаревшую версию (4) или что-то в этом роде, или вы неправильно ее скомпилировали, попробуйте выполнить phpinfo (); и верните версию обратно

Ответ №2:

Между здесь:

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

Пожалуйста, поставьте

 print_r($_POST);
  

И убедитесь, что все ключи, из которых вы получаете доступ к данным, верны и заполнены.

IE:

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

Комментарии:

1. Я ввожу print_r ($ _POST); и он возвращает это в firebug Array ( ) Пожалуйста, заполните все отмеченные поля *

2. Вы можете просмотреть это в firebug, но просто просмотрите исходный код на рассматриваемой странице, на которой фактически выполняется код, и вы увидите массив с ключами (ключами формы) и значениями … сопоставьте их и посмотрите, нет ли у вас орфографической ошибки.

Ответ №3:

 !empty($_POST['LeadBlind']
  

Это поле может быть только пустым, потому что оно скрыто, и вы не присвоили ему значение.

Кроме того, это очень плохой HTML (теги должны быть закрыты), и я бы использовал isset() -функцию для каждого $_POST поля, которое было установлено в вашей форме. Потому что, если поле не имеет значения, а форма отправляется, в $_POST -массиве вообще нет записи.

Комментарии:

1. приятно, та же идея, facebook замедлил меня опубликовать ее первым = P

2. Я использую ‘LeadBlind’, чтобы «попробовать» и обнаружить ботов, поскольку это скрытое поле, которое человек не увидит, поэтому, если бот заполняет его, и оно затем имеет значение — это сбой.

3. Какой бот заполнил бы скрытое поле?