文档章节

PHP $_SERVER['HTTP_REFERER'] 获取前一页面的 URL 地址

ywppengpeng
 ywppengpeng
发布于 2016/11/17 10:06
字数 366
阅读 52
收藏 1

PHP $_SERVER['HTTP_REFERER']

使用 $_SERVER['HTTP_REFERER'] 将很容易得到链接到当前页面的前一页面的地址。一个例子如下:

index.php(实际地址为:http://www.ywp.com/php/index.php):

<a href="test.php">链接</a>

test.php(实际地址为:http://www.ywp.com/php/test.php):

echo $_SERVER['HTTP_REFERER'];

在浏览器访问 index.php,点击链接到 test.php,得到的输出结果为:

http://www.ywp.com/php/index.php

PHP $_SERVER['HTTP_REFERER'] 无效

需要注意的是,$_SERVER['HTTP_REFERER'] 完全来源于浏览器。并不是所有的用户代理(浏览器)都会设置这个变量,而且有的还可以手工修改 HTTP_REFERER。因此,$_SERVER['HTTP_REFERER'] 不总是真实正确的。

通常下面的一些方式,$_SERVER['HTTP_REFERER'] 会无效:

  1. 直接输入网址访问该网页。
  2. Javascript 打开的网址。
  3. Javascript 重定向(window.location)网址。
  4. 使用 meta refresh 重定向的网址。
  5. 使用 PHP header 重定向的网址。
  6. flash 中的链接。
  7. 浏览器未加设置或被用户修改。

所以一般来说,只有通过 <a></a> 超链接以及 POSTGET 表单访问的页面,$_SERVER['HTTP_REFERER'] 才有效。

由于 $_SERVER['HTTP_REFERER'] 对 POST 表单访问也是有效的,因此在表单数据处理页面一定程度上可以通过校验 $_SERVER['HTTP_REFERER'] 来防止表单数据的恶意提交。但该方法并不能保证表单数据的绝对正确,即对表单数据的真实性检测并不能完全依赖于 $_SERVER['HTTP_REFERER'] 。

© 著作权归作者所有

ywppengpeng
粉丝 5
博文 63
码字总数 32377
作品 0
西安
程序员
私信 提问
PHP获取HTML文件名表单数据等

1、PHP获取表单各项数据 --- 与表单提交的方式有关 GET方式,格式:$GET[“formelement”] POST方式,格式:$POST[“formelement”] REQUEST方式,格式:$_REQUEST[“formelement”] 2、表单...

wqli
2014/04/12
0
0
PHP服务器变量$_SERVER汇总介绍

服务器变量 $_SERVER 汇总介绍: $SESSION['PHPSELF'] -- 获取当前正在执行脚本的文件名。 $SERVER['SERVERPROTOCOL'] -- 请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。 $SERVER['R......

雾渺
2012/05/02
0
0
PHP_$_SERVER_说明详解

PHP编程中经常需要用到一些服务器的一些资料,特把$_SERVER的详细参数整理下,方便以后使用。

喵王不瞌睡
2014/08/09
0
0
PHP服务器变量$_SERVER详解(个人整理)

今天仔细学习了一下手册关于服务器变量的内容,写个一个笔记,贴出来希望对大家有所帮助。 服务器变量 $_SERVER 详解: 1、$SESSION['PHPSELF'] -- 获取当前正在执行脚本的文件名 2、$SERVER...

魏小杰
2013/03/12
0
0
PHP中$_SERVER的详细参数与说明

$SERVER['PHPSELF'] #当前正在执行脚本的文件名,与 document root相关。 $SERVER['argv'] #传递给该脚本的参数。 $SERVER['argc'] #包含传递给程序的命令行参数的个数(如果运行在命令行模式......

随智阔
2012/12/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

开发函数计算的正确姿势 —— 移植 next.js 服务端渲染框架

首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准...

阿里云云栖社区
35分钟前
1
0
Windows获取其他进程中Edit控件的内容

最近做的MFC项目中,有个获取其他进程中Edit控件内容的需求,本来以为是个很简单的问题,但是来来回回折腾了不少时间,发博记录一下。   刚开始拿到这个问题,很自然的就想到GetDlgItemTex...

WinkJie
41分钟前
0
0
Mysql数据库基于流量审计mysql-sniffer部署

Base Enviroment:CentOS release 6.5 +10.1.40-MariaDB MariaDB Server 安装完后,经过Navicat客户端工具,java web项目,linux操作系统myql客户端,三个维度(客户端)的实测。 实测结果是:...

硅谷课堂
44分钟前
0
0
Visual Paradigm 教程[UML]:如何在SoaML中建模多方服务?(下)

下载Visual Paradigm最新试用版 第三部分 - 用UML序列图指定多方编排 在多服务合同中,可以在交互图中显示各方之间的通信和编排。像UML序列图这样的交互图显示了谁调用谁以及何时进行调用。让...

xiaochuachua
51分钟前
1
0
rpm 自动依赖安装

rpm -Uvh *

Mr_Tea伯奕
54分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部