如何使用 PHP 获取以前的站点 URL


How can I get previous Site URL using PHP

我有一些问题。所以我想使用

 $_SERVER['HTTP_REFERER'];

然后基本上是分散它。

这就是我现在正在做的事情。

 $previousUrl = $_SERVER['HTTP_REFERER'];
echo $previousUrl; 

我想使用回声显示网址。但它不起作用。

有人可以向我解释我做错了什么吗?

国王问候,

阿图尔。

最终,您必须依赖用户及其浏览器配置。

如果他们点击了来自另一个网站的链接,并且用户没有任何内容(插件等)阻止引荐来源,$_SERVER['HTTP_REFERER']将被填充。

如果他们直接访问了该网站或他们阻止了该站点HTTP_REFERER则该值将为空,并且您无法访问它。

来自RFC7231:
超文本传输协议(HTTP/1.1):语义和内容

"Referer" [原文如此] 标头字段允许用户代理指定 从中获取目标 URI 的资源的 URI 引用 (即"引用者",尽管字段名称拼写错误)。 一个用户 代理不得包含 生成引用字段时的 URI 引用 [RFC3986](如果有) 价值。

 Referer = absolute-URI / partial-URI<br><br>

Referer 标头字段允许服务器生成反向链接 用于简单分析、日志记录、优化缓存的其他资源, 等。 它还允许找到过时或键入错误的链接 保养。 某些服务器使用 Referer 标头字段作为 拒绝来自其他网站的链接(所谓的"深层链接")或 限制跨站点请求伪造 (CSRF),但不是所有请求 包含它。

例:

 `Referer: http://www.example.org/hypertext/Overview.html`

如果目标 URI 是从没有其 自己的 URI(例如,来自用户键盘的输入,或 用户的书签/收藏夹),用户代理必须排除 引用字段或以值"about:blank"发送。

引用者字段有可能揭示有关 请求用户的上下文或浏览历史记录,这是一种隐私 关注引用资源的标识符是否显示个人 信息(如帐户名称)或应包含的资源 保密(例如在防火墙后面或内部 安全服务)。 大多数通用用户代理不会发送 引用资源为本地"文件"或 "数据"URI。 用户代理不得在 不安全的 HTTP 请求(如果收到引用页面时带有 安全协议。 有关其他安全性,请参阅第 9.4 节 考虑。

  Some intermediaries have been known to indiscriminately remove

来自传出请求的引用标头字段。 这有 干扰CSRF保护的不幸副作用 攻击,对用户可能危害更大。 希望限制的中介和用户代理扩展 Referer 中的信息披露应将其更改限制为 特定编辑,例如将内部域名替换为 假名或截断查询和/或路径组件。 一 中介不应修改或删除引用标头字段 当字段值与请求共享相同的方案和主机时 目标。

它应该像你写的那样工作,或者像

if(isset($_SERVER['HTTP_REFERER'])) {
    echo $_SERVER['HTTP_REFERER'];
}
如果没有引用器或

以前的站点使用了取消引用器,则结果可能是错误的或不存在的。