2010-04-08 33 views
0

我有一個帶有國旗的網站。如果被點擊,網站的語言會發生變化。PHP代碼不適用於IE

這裏是顯示標誌,這與交事件形式的代碼:

<?php 
    $pagename = $_SERVER['REQUEST_URI']; 
    echo '<form action="'.$pagename.'" method="post"> 
    <input name="formlanguage" type="image" '; 
    if ($_SESSION['lang'] == 0) 
    { 
     echo 'alt="English" src="images/en.png" value="1" '; 
    } 
    else 
    { 
     echo 'alt="Deutsch" src="images/de.png" value="0" '; 
    } 
    echo '/></form>'; 
    ?> 

下面是該響應,並且該部分上總是失敗IE:

if (isset($_POST['formlanguage'])) 
{ 
    $_SESSION['lang']=$_POST['formlanguage']; 
} 

我無法弄清楚爲什麼它在Chrome上運行,但不是IE。我認爲它可能是IE的設置。但那可能是什麼?

+3

只是迂腐它不是PHP代碼並不在IE瀏覽器,而是PHP代碼的輸出....會有更好的,如果你發佈輸出,而不是 – hhafez 2010-04-08 10:49:43

+0

*(相關)* http://www.php.net/manual/en/faq.html.php#faq.html.form-image – Gordon 2010-04-08 10:55:32

回答

6

IE不會發送服務器端圖像映射的值,只有座標。

由於您有一個簡單的切換:添加一個隱藏的輸入,它指定要更改的語言,而不是取決於圖像輸入數據。

如果要提供多個選項(或使其更容易在將來也會如此),使用不同的控制對不同的語言,檢查每一個存在(或者說,name.x或名稱.y(在PHP中轉換爲_)),而不是具有不同值的標準名稱。

+0

這工作。謝謝。 – 2010-04-08 10:54:09

+0

+1:很高興知道:) – Sarfraz 2010-04-08 11:00:41

0

成爲跟蹤語言安全使用隱藏字段:

echo '<form action="'.$pagename.'" method="post">'; 
echo '<input id="lang" type="hidden" name="lang" value="'.$_SESSION['lang'].'" />'; 
echo '<input name="formlanguage" type="image" onclick="setLanguage(this.value);" '; 
.... 
echo '<script>function setLanguage(l){ document.getElementbyId("lang").value=l;}</script>'; 

... 

if (isset($_POST['lang'])) 
{ 
    $_SESSION['lang']=$_POST['lang']; 
} 
相關問題