HTML表单按钮未发送完整值

时间:2016-07-22 14:49:48

标签: php html

我有一个简单的后退按钮表单,它应该使用PHP $_SERVER['HTTP_REFERER']并将其用作按钮的action

    <?php
        echo "<form class='BackButton' action='" . $_SERVER['HTTP_REFERER'] . "'>";
        echo "<input type='submit' class='button' value='Back' />";
        echo "</form>";
    ?>

当我使用此按钮导航到该页面并将鼠标悬停在按钮上时,它具有正确的action='http://engsys.corp.ftr.com//MaterialTracking_Filtered_State.php?search=in'然后,当我点击该按钮时,它会删除?search=in,因此出现的页面不是&#39 ;是正确的。

为什么这样做?我认为,因为action它会被发送出去吗?

1 个答案:

答案 0 :(得分:5)

当您使用method="GET"(默认值)提交for时,现有的查询字符串将被替换。

保留它:生成隐藏的输入以复制值。

例如(这不能处理查询字符串中的数组值):

<?php
$referer = "http://engsys.corp.ftr.com//MaterialTracking_Filtered_State.php?search=in";
$url = parse_url($referer);
parse_str($url['query'], $query);
?>

<form action="<?= htmlspecialchars($url['scheme']); ?>://<?= htmlspecialchars($url['host']); ?><?= htmlspecialchars($url['path']); ?>">
<?php  foreach ($query as $key => $value) { ?>
<input type="hidden" name="<?= htmlspecialchars($key); ?>" value="<?= htmlspecialchars($value); ?>">
<?php } ?>
<input type='submit' class='button' value='Back' />
</form>

那说,并重新阅读了问题:您没有收集任何用户数据,因此您不应该使用表单。

基本上,您正在生成链接,因此请使用链接:

<a href="<?=htmlspecialchars($_SERVER['HTTP_REFERER']);?>">Back</a>

......但即使这不是一个好主意。 Referer标题是可选的,按钮或链接不会将它们返回。它会将它们转发到以前的URL(包含您对浏览器历史记录列表可能会产生的所有影响)。

浏览器带有一个内置的后退按钮,可以在任何地方以相同的方式工作。你可以简单地让他们使用它。