我有一个简单的后退按钮表单,它应该使用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
它会被发送出去吗?
答案 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(包含您对浏览器历史记录列表可能会产生的所有影响)。
浏览器带有一个内置的后退按钮,可以在任何地方以相同的方式工作。你可以简单地让他们使用它。