[英]Why won't my basic PHP validation process in IE, FireFox or Opera?
基於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'])){
//在這里驗證
}
?>
正如Molle博士所建議的,與Chrome和Safari相比,IE,FireFox和Opera處理用作提交按鈕的圖像的價值不同。
我的驗證始於:
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
為空。
看這個:
if(isset($_POST['contactsubmit']))
這個變量在失敗的瀏覽器中不存在,如果使用圖像提交,則存在變量$_POST['contactsubmit_x']
和$_POST['contactsubmit_y']
。
它適用於Chrome / Safari,因為如果你為image-submit設置了一個value-attribute,它們也會發送變量“contactsubmit”(但是你看到這個變量的出現是不可靠的)。
但我建議不要使用這些變量。 這取決於瀏覽器是否總是發送這些變量,或者只有在單擊按鈕時才會發送,因此當用戶使用[ENTER]在某些瀏覽器中提交表單時會遇到問題。
檢查另一個變量,例如$_POST['contactemail']
。
我剛看了你的表格,似乎在這里使用FF 3.6.10正常工作。 我認為這是一個緩存問題,請清除瀏覽器緩存並重試。
此外,您可能希望查看FF的Web Devoloper插件,因為它提供了一種禁用/啟用緩存的簡便方法。 https://addons.mozilla.org/en-US/firefox/addon/web-developer/
由於php是服務器端,因此不會受到不同瀏覽器的影響。
親切的問候加里
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.