PHP - $ _SERVER [“HTTP_REFERER”];

时间:2016-10-07 19:22:23

标签: php

我正在尝试构建一个应用程序,我需要检查重定向到此页面的引用URL,引用的页面将不会显示...当它是一个按钮但是当页面从另一个页面重定向时,它会起作用,它仍然是空白的。 我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

它会/可能是空的:

  
      
  • 当最终用户在浏览器地址栏中输入网站URL时。
  •   
  • 通过浏览器维护的书签访问该网站。
  •   
  • 在窗口/标签页中作为第一页访问了该网站。
  •   
  • 从https网址切换为http网址。
  •   
  • 从https网址切换到其他https网址。
  •   
  • 安装了安全软件(防病毒软件/防火墙/等),可以从所有请求中删除引荐来源。
  •   
  • 位于代理商的后面,代理商会从所有请求中删除引荐来源。
  •   
  • 以编程方式访问网站(例如,curl),而不是通过@BalusC设置引荐来源标题(searchbots!)
  •   

也就是说,你不会总是有一个推荐人地址。所以你完全不能相信推荐人的地址。

例如:

有一个小漏洞,每个人都可以轻松地做到这一点:

  

转到任何网站,并注入表单代码,将数据从此站点发送到另一个站点,这样命运站点将从注入的站点接收数据,而不是从您那里接收数据。

永远不要信任推荐人地址。使用 SESSION 很可能是阻止提交跨网站表单的更好途径。

我建议阅读:

答案 1 :(得分:0)

您可以在标题中设置一个带有引用URL的值的cookie,该值在5秒后到期,然后在新脚本中获取并重定向回到引用者

像这样:

$current_url= base64_encode($url); //$url should point to the current url

setcookie("referrer",$current_url,time()+5);

现在,您可以使用以下命令在下一个脚本中获取存储的URL:

$referrer= base64_decode($_COOKIE['referrer']);

并使用以下方式重定向:

header('Location: '.$referrer);