【问题标题】:$_SERVER['HTTP_REFERER'] is it ok to use it with multiple forms$_SERVER['HTTP_REFERER'] 可以和多种形式一起使用吗
【发布时间】:2017-03-29 00:53:26
【问题描述】:

这是我在每个表单之后使用的多页表单中返回上一页的方法:

$url = htmlspecialchars($_SERVER['HTTP_REFERER']);
echo "<a href='$url'>GO BACK</a>";

但我不确定它是否能正常工作。有没有更好的方法可以返回上一页。我不想使用标题(location:),可能是多次提交,即一个提交表单,另一个提交。但我不确定如何正确实施。

【问题讨论】:

标签: php html back


【解决方案1】:

正如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 等,这是最可靠的方式。

【讨论】:

  • history.go() 将基于浏览器历史记录,对吗?如果用户同时访问多个站点,那么?
  • @Shady7447,对。然后它将作为浏览器的“后退”按钮。这就是为什么您应该根据应用程序的逻辑生成链接
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
  • 2012-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-08
相关资源
最近更新 更多