Firefox和IE表单未正确提交

时间:2014-04-27 20:31:30

标签: php html session

所以这是我的问题。我有以下表格:

<form name="picture_categories" action="scripts/catalog.php" method="post">
            <input class="visibleForm" onclick="return false;" type="image" src="images/smartphones.png"/>
            <label for="smartphones">Smartphones</label>
            <input type="hidden" name="device" value="smartphones" />
            <div class="hiddenForm" style="display:none">
                <input src="images/logos/apple-logo.png" type="image" name="manuf" value="APPLE" />
                <input src="images/logos/samsung-logo.png" type="image" name="manuf" value="Samsung" />
                <input src="images/logos/blackberry-logo.png" type="image" name="manuf" value="Blackberry" />
                <!-- <input src="images/logos/htc_logo.png" type="image" name="manuf" value="HTC" /> add to catalog first-->
                <input src="images/logos/lg-logo.png" type="image" name="manuf" value="LG" />
            </div>
    </form>

据说,当我点击其中一个输入[name ='manuf']时,它会将其值与隐藏输入('device')值一起提交给下一页。 现在,下一页有以下脚本:

<?php session_start(); ?>
<?php
    if(isset($_POST['device'])) {
        $_SESSION['device'] = $_POST['device'];
        }
    if (isset($_POST['manuf'])) {
        $_SESSION['manuf'] = $_POST['manuf'];
        }

        header ("Location: ../display_catalog.php");
?>

最后一页 - display_catalog.php使用$ _SESSION数据显示目录的相关部分。

该代码在Chrome中运行良好;但是:

  • 在Firefox中以某种方式忽略$ _SESSION ['manuf']变量。因此它通过$ _SESSION ['device']正确地对我的目录进行排序,但不想按制造商名称对其进行排序。
  • 在IE中它完全忽略了两个$ _SESSION变量。

这可能是什么问题?。

1 个答案:

答案 0 :(得分:1)

这是因为图像carry the x,y coordinate of the button类型的输入按钮,而不是值(该按钮用于使图像充当提交)。它的行为非常依赖浏览器,这就是为什么你看到它在浏览器中的工作方式如此不同。

如果您想使用图片进行自定义并使提交按钮正常工作,您可以使用<button>元素并使用CSS背景属性设置样式或直接放置img元素:

类似的东西:

<button type="submit" name="manuf" value="apple"><img src="apple-image.png"></button>
<button type="submit" name="manuf" value="samsung"><img src="somsung-image.png"></button>