PHP-код не работает на IE - PullRequest
0 голосов
/ 08 апреля 2010

У меня есть сайт с флагом. Если щелкнуть, язык сайта изменится.

Вот код, отображающий флаг, который является формой с событием post:

   <?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. Но что это может быть?

Ответы [ 2 ]

6 голосов
/ 08 апреля 2010

IE не отправляет значение для карт изображений на стороне сервера, только координаты.

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

Если вы хотите предоставить несколько вариантов (или упростить это в будущем), используйте разные элементы управления names для разных языков и проверьте наличие каждого из них (или, скорее, имени). x или name.y (с. преобразуется в _ в PHP)) вместо стандартного имени с другими значениями.

0 голосов
/ 08 апреля 2010

для безопасного использования скрытого поля для отслеживания языка:

 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'];
 }
...