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

时间:2015-03-11 21:09:23

标签: php

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

 $_SERVER['HTTP_REFERER'];

然后基本上显示它。

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

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

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

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

金问候,

阿图尔。

3 个答案:

答案 0 :(得分:1)

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

如果他们点击了其他网站的链接而用户没有任何内容(插件等)阻止推介者,则会填充$_SERVER['HTTP_REFERER']

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

答案 1 :(得分:1)

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

“Referer”[sic]标题字段允许用户代理指定    获取目标URI的资源的URI引用    (即“推荐人”,尽管字段名称拼写错误)。一个用户    代理不得包含的片段和userinfo组件    生成Referer字段时的URI引用[RFC3986](如果有)    值。

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

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

示例:

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

如果目标URI是从没有它的源获得的    自己的URI(例如,来自用户键盘的输入,或者用户键盘中的条目)    用户的书签/收藏夹),用户代理必须排除    Referer字段或发送值为“about:blank”。

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

  Some intermediaries have been known to indiscriminately remove

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

答案 2 :(得分:-2)

它可以在您编写时使用,或者像

一样
if(isset($_SERVER['HTTP_REFERER'])) {
    echo $_SERVER['HTTP_REFERER'];
}

如果没有引用者或以前的网站使用过引用者,结果可能是错误的或不存在。