#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. Какой бот заполнил бы скрытое поле?