PHP获取当前页面URL和上一页来源的方法
本文介绍如何使用PHP的$_SERVER变量快速获取当前页面的URL地址及上一跳链接的来源(Referer),并包含处理查询参数的完整方案与安全注意事项。
核心原理
PHP运行时会从Web服务器接收环境变量,并将其存储在名为 $_SERVER 的超全局数组中。要获取地址相关信息,主要涉及以下几个键值:
HTTP_HOST:服务器的主机名(如 www.example.com)。PHP_SELF:当前执行脚本的文件名与路径。QUERY_STRING:URL中的查询参数部分(不含问号)。HTTP_REFERER:链接到当前页面的前一个页面的地址。
第1步:获取带参数的完整当前页地址
这是最常用且信息最全的方式,适用于生成分享链接、重定向或记录日志。
- 目的:还原用户在浏览器地址栏看到的完整URL。
- 入口:任意PHP文件顶部逻辑块。
- 动作:拼接主机名、脚本路径及查询字符串。
- 重要参数:
$_SERVER["HTTP_HOST"],$_SERVER["PHP_SELF"],$_SERVER["QUERY_STRING"]。 - 完成状态:变量
$current_url赋值为完整的URI字符串。
$protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http";
$current_url = $protocol . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
echo $current_url;
注:使用 REQUEST_URI 比手动拼接更稳妥,因为它包含了路径和参数以及可能的锚点信息。
第2步:获取上一页的地址(来源追踪)
用于分析用户导航路径或简单的防刷逻辑。
- 目的:判断用户是从哪个页面点击进来的。
- 入口:需要接收来源的PHP文件中。
- 动作:读取
HTTP_REFERER环境变量。 - 重要参数:
$_SERVER['HTTP_REFERER']。 - 完成状态:成功提取来源URL或在无来源时获得默认提示。
$referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '未知来源';
echo '用户来自: ' . htmlspecialchars($referrer);
安全风险提示
在使用上述变量构建响应内容时,务必注意以下两点:
- 数据不可靠性:
HTTP_REFERER是由客户端发送的,用户可以伪造或完全禁用(如使用隐私模式)。因此不要将其作为唯一的安全校验依据。 - XSS防护:由于
HTTP_REFERER和用户输入的URL通常未经过滤直接输出,直接使用可能导致跨站脚本攻击。必须使用htmlspecialchars()进行转义后再输出到HTML页面中。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













