Проверка моей формы на основе PHP не работает в последних версиях IE, Firefox или Opera. Я нажимаю кнопку «Отправить» с пустыми значениями в полях формы, чтобы вызвать проверку, но страница просто обновляется.
Странно, что сообщения о проверке и ошибках работают в Chrome и Safari.
Посмотрите на это здесь: http://www.directsponsor.org/contact/
Может кто-нибудь посоветовать мне известные проблемы, касающиеся того, почему PHP может не работать в определенных браузерах некоторые браузеры ведут себя по-разному?
Заранее извиняюсь за горы кода, хотя я предполагаю, что это необходимо:
Вот форма:
<form method="post" action="http://www.directsponsor.org/contact/">
<fieldset>
<ul>
<?php if(isset($_POST['contactsubmit'])){
if (!$contactnamevalidation){
echo "<li class='contactfail'><p><img src='"; echo bloginfo('stylesheet_directory'); echo "/images/icons/101-large.png'> You did not input your <strong>name</strong>.</p></li>";
}
}
?>
<li>
<label for="contactname">Your name <em>(required)</em></label>
<input type="text" name="contactname" class="textbox" value="<?php if (isset($_POST['contactname'])) {echo htmlspecialchars($_POST['contactname'], ENT_QUOTES); }?>">
</li>
<?php if(isset($_POST['contactsubmit'])){
if (!$contactemailvalidation1){
echo "<li class='contactfail'><p><img src='"; echo bloginfo('stylesheet_directory'); echo "/images/icons/101-large.png'> You did not input your <strong>email</strong>.</p></li>";
}
}
?>
<?php if(isset($_POST['contactsubmit'])){
if (!$contactemailvalidation2){
echo "<li class='contactfail'><p><img src='"; echo bloginfo('stylesheet_directory'); echo "/images/icons/101-large.png'> You did not input a <strong>valid email</strong>.</p></li>";
}
}
?>
<li>
<label for="contactemail">Your email <em>(required)</em></label>
<input type="text" name="contactemail" class="textbox" value="<?php if (isset($_POST['contactemail'])) {echo htmlspecialchars($_POST['contactemail'], ENT_QUOTES); }?>">
</li>
<?php if(isset($_POST['contactsubmit'])){
if (!$contactmessagevalidation){
echo "<li class='contactfail'><p><img src='"; echo bloginfo('stylesheet_directory'); echo "/images/icons/101-large.png'> You did not input a <strong>message</strong>.</p></li>";
}
}
?>
<li>
<label for="contactmessage">Message <em>(required)</em></label>
<textarea name="contactmessage"><?php if (isset($_POST['contactmessage'])) {echo htmlspecialchars($_POST['contactmessage'], ENT_QUOTES); }?></textarea>
</li>
<li class="buttons">
<label for="contactsubmit"> </label><input type="image" src="/wp-content/themes/directsponsor/images/button-sendmessage.png" name="contactsubmit" value="Submit Message">
<?php if(isset($_POST['contactsubmit'])){echo"<a href='http://www.directsponsor.org/contact/'><img src='/wp-content/themes/directsponsor/images/button-clearform.png'/></a>";} ?>
</li>
</ul>
</fieldset>
</form>
Вот (соответствующая часть) проверки:
<?php
if(isset($_POST['contactsubmit'])){
// Проверка здесь.
}
?>
Ответ
Как предполагает доктор Молл, IE, FireFox и Opera обрабатывают значение изображений, используемых в качестве кнопки отправки , по-разному по сравнению с Chrome и Safari.
Моя проверка началась с:
if(isset($_POST['contactsubmit'])){
IE, Firefox и Opera публикуют следующие значения:
//Values for image as a submit button.
contactsubmit_x
contactsubmit_y
Поскольку оба эти значения отличаются от contactsubmit
, условие if(isset())
не срабатывает. Чтобы запомнить это, мне нужно было использовать элемент формы, отличный от , в качестве кнопки отправки , такой как поле электронной почты:
if(isset($_POST['contactemail'])){
Это вызовет условие для проверки, является ли contactemail
пустым или нет.