zoukankan      html  css  js  c++  java
  • PHP $_SERVER['HTTP_REFERER'] 获取前一页面的 URL 地址

    转载:http://www.5idev.com/p-php_server_http_referer.shtml

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

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

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

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

    echo $_SERVER['HTTP_REFERER'];
    

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

    http://www.5idev.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> 超链接以及 POST 或 GET 表单访问的页面,$_SERVER['HTTP_REFERER'] 才有效。

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

  • 相关阅读:
    UVa 10118 记忆化搜索 Free Candies
    CodeForces 568B DP Symmetric and Transitive
    UVa 11695 树的直径 Flight Planning
    UVa 10934 DP Dropping water balloons
    CodeForces 543D 树形DP Road Improvement
    CodeForces 570E DP Pig and Palindromes
    HDU 5396 区间DP 数学 Expression
    HDU 5402 模拟 构造 Travelling Salesman Problem
    HDU 5399 数学 Too Simple
    CodeForces 567F DP Mausoleum
  • 原文地址:https://www.cnblogs.com/aaronguo/p/10496571.html
Copyright © 2011-2022 走看看