【发布时间】:2017-03-29 00:53:26
【问题描述】:
这是我在每个表单之后使用的多页表单中返回上一页的方法:
$url = htmlspecialchars($_SERVER['HTTP_REFERER']);
echo "<a href='$url'>GO BACK</a>";
但我不确定它是否能正常工作。有没有更好的方法可以返回上一页。我不想使用标题(location:),可能是多次提交,即一个提交表单,另一个提交。但我不确定如何正确实施。
【问题讨论】:
这是我在每个表单之后使用的多页表单中返回上一页的方法:
$url = htmlspecialchars($_SERVER['HTTP_REFERER']);
echo "<a href='$url'>GO BACK</a>";
但我不确定它是否能正常工作。有没有更好的方法可以返回上一页。我不想使用标题(location:),可能是多次提交,即一个提交表单,另一个提交。但我不确定如何正确实施。
【问题讨论】:
正如documentation中所说,并不是所有的用户代理都设置了referer:
'HTTP_REFERER'
将用户代理引向当前页面的页面地址(如果有)。这是由用户代理设置的。不是所有的用户代理都会设置这个,有些提供修改 HTTP_REFERER 作为一个特性的能力。简而言之,它不能真正被信任。
换句话说,$_SERVER['HTTP_REFERER'] 可能为空。
我宁愿使用 JavaScript:
<a href="javascript:history.go(-1)">Back</a>
有时可以通过应用程序的逻辑来确定上一页。例如,如果页面“Step 2”在页面“Step 1”之后,那么我会根据逻辑生成一个 URL:/registration/step1、/registration/step2 等,这是最可靠的方式。
【讨论】: