PHP HTTP引用器-如果它没有被客户端传递怎么办?


PHP HTTP Referrer - what if it's not passed by the client?

我想记住引荐人,并在用户在我的网站上提交表单后将他们送回原始站点。

我的问题出现了,因为HTTP_REFERRER并不总是通过…人们有哪些典型的解决办法来解决这个问题呢?除了使用$_SERVER之外,还有其他方法来获取这些信息吗?

这个网站不是我的,他们会来自....

如果我诚实的话,大多数选择不发送这些信息的人应该习惯这种行为,我从来没有理解为什么有人会这么在意不发送它,所以也许如果有人可以启发我?我猜是隐私爱好者之类的…

?

话是这么说的,我要做的是,如果找到一个引荐者,然后自动重定向,或者存储他们来自会话的页面,并重定向到该链接(也就是说,如果他们来自你的网站内的页面,所以你可以抓住它)…否则,您可以显示以下链接:

<a href="javascript:history.go(-1)">Return</a>

但是,我也不知道你的情况的全部细节。

这取决于您是否控制设置http_referer的服务器。你不能指望这些信息在那里,所以你必须控制一些用户路径。例如,如果您知道它们将来自的链接,您可以传递一个get变量。这就是为什么你必须做一些主要的工作来让它工作的原因。因为你不能相信来自客户端的信息

你不能依赖HTTP_REFERRER来设置。(准确地说,是这样。)简单的(也是唯一的)解决方案是设计你的应用程序来优雅地处理这种情况。例如,如果你不知道他们来自哪里,把他们发送到一些通用的感谢页面。

不能保证客户端会向您发送referrer(顺便说一下,它是HTTP_REFERER,而不是HTTP_REFERRER)。有些客户端出于隐私原因会隐藏它,并且可能会掩盖您可能找到它的其他方式。因此,在提交表单之后,您应该有一个默认的登陆页面,以防止它不包含在请求中。

你永远不能指望客户端发送HTTP_REFERRER

您可以将当前URL作为GET参数附加到表单操作。另一个解决方案是基于cookie/session。

一些框架将此功能实现为"flash作用域"(用于不同的目的,但您需要类似的功能)。