【问题标题】:PHP code not working on IEPHP 代码在 IE 上不起作用
【发布时间】:2010-04-08 10:44:31
【问题描述】:

我有一个带有标志的网站。如果点击它,网站的语言就会改变。

这是显示标志的代码,这是一个带有 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 的设置。但那会是什么?

【问题讨论】:

标签: php forms internet-explorer postback


【解决方案1】:

IE 不发送服务器端图像映射的值,只发送坐标。

由于您有一个简单的切换:添加一个隐藏的输入,它指定要更改的语言,而不是依赖于图像输入数据。

如果您想提供多个选项(或者以后更容易做到这一点),请为不同的语言使用不同的控件名称,并检查每个选项是否存在(或者更确切地说,名称.x 或 name.y(在 PHP 中将 . 转换为 _))而不是具有不同值的标准名称。

【讨论】:

    【解决方案2】:

    为了安全起见,使用隐藏字段来跟踪语言:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-05
      • 2013-12-15
      • 1970-01-01
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多