php中HTTP_REFERER函数用法实例


Posted in PHP onNovember 21, 2014

本文实例分析了php中HTTP_REFERER函数用法。分享给大家供大家参考。具体分析如下:

利用php的http_referer函数来判断用户的来路,这是比较简单的,实例代码如下:

<?php 

   if (isset($_SERVER['HTTP_REFERER'])) { 

     print "The page you were on previously was {$_SERVER['HTTP_REFERER']}<br />"; 

   } else { 

     print "You didn't click any links to get here<br />"; 

      } 

    ?> 

<a href="refer.php">Click me!</a>

下面是我们让用户不知道我们的来路处理,实例代码如下:
<?php 

$host = "3water.com"; 

$referer = "http://".$host; 

$fp = fsockopen ($host, 80, $errno, $errstr, 30); 

if (!$fp){ 

        echo "$errstr ($errno)<br>;n"; 

}else{ 

$request = " 

GET / HTTP/1.1 

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */"."* 

Referer: http://$host 

Accept-Language: zh-cn 

Accept-Encoding: gzip, deflate 

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) 

Host: $host 

Connection: Close" 

."rnrn"; 

 

fputs ($fp, "$request"); 

while (!feof($fp)) 

{ 

   $res[] = fgets($fp,1024); 

} 

$html = join("",$res); 

fclose ($fp); 

$fp = file_put_contents("123cha.html",$html); 

echo "done";

}

这不就行了?

不过很奇怪的是,3water.com 的页面抓下来是乱码(除了http头),这是为什么?难道是因为用了gzip之类压缩?

<?php 

$host = "3water.com"; 

$html = file_get_contents("http://".$host); 

$fp = file_put_contents("hao123.html",$html); 

echo "done"; 

?>;

但这样抓的就没问题,再来分析开始抓的http头:

HTTP/1.1 200 OK Date: Wed, 31 Aug 2005 00:59:36 GMT Server: Apache/1.3.27 Cache-Control: max-age=1296000 Expires: Thu, 15 Sep 2005 00:59:36 GMT Last-Modified: Mon, 29 Aug 2005 13:56:00 GMT Accept-Ranges: bytes Connection: close Content-Type: text/html Content-Encoding: gzip Content-Length: 14567

果然有这句,Content-Encoding:gzip ,原来压缩了的,长度14567字节了,用第二种方法抓,原来没压缩的html是71143字节,原来file_get_contents还可以自动解压缩.

php实例二,代码如下:

<?php 

$host = '127.0.0.1'; 

$target = '/2.php'; 

$referer = 'https://3water.com'; //伪造HTTP_REFERER地址 

$fp = fsockopen($host, 80, $errno, $errstr, 30); 

if (!$fp){ 

echo "$errstr($errno)<br />n"; 

}  

else{ 

$out = " 

GET $target HTTP/1.1 

Host: $host 

Referer: $referer 

Connection: Closernrn"; 

fwrite($fp, $out); 

while (!feof($fp)){ 

echo fgets($fp, 1024); 

} 

fclose($fp); 

} 

?>

另一个2.php文件很简单,只是写上一行读取当前的HTTP_REFERER服务器值的代码即可,如下:
<?php 

echo "<hr />"; 

echo $_SERVER["HTTP_REFERER"]; 

?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
优化NFR之一 --MSSQL Hello Buffer Overflow
Oct 09 PHP
php调用mysql存储过程
Feb 14 PHP
PHP中foreach循环中使用引用要注意的地方
Jan 02 PHP
PHP中copy on write写时复制机制介绍
May 13 PHP
ThinkPHP中自定义目录结构的设置方法
Aug 15 PHP
php+ajax实现无刷新分页的方法
Nov 04 PHP
PHP自定session保存路径及删除、注销与写入的方法
Nov 18 PHP
php定时执行任务设置详解
Feb 06 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
May 25 PHP
浅谈mysql_query()函数的返回值问题
Sep 05 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
php中call_user_func函数使用注意事项
Nov 21 #PHP
PHP中shuffle数组值随便排序函数用法
Nov 21 #PHP
php常用数学函数汇总
Nov 21 #PHP
PHP检测字符串是否为UTF8编码的常用方法
Nov 21 #PHP
php防止恶意刷新与刷票的方法
Nov 21 #PHP
php采用curl实现伪造IP来源的方法
Nov 21 #PHP
php文件缓存类汇总
Nov 21 #PHP
You might like
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
javascript编程起步(第五课)
2007/02/27 Javascript
js可突破windows弹退效果代码
2008/08/09 Javascript
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
深入理解JavaScript定时机制
2010/10/29 Javascript
jquery中获取元素的几种方式小结
2011/07/05 Javascript
Js日期选择自动填充到输入框(界面漂亮兼容火狐)
2013/08/02 Javascript
jQuery - css() 方法示例详解
2014/01/16 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
javascript实现切换td中的值
2014/12/05 Javascript
javascript实现简单的鼠标拖动效果实例
2015/04/10 Javascript
深入浅出理解javaScript原型链
2015/05/09 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
2015/10/16 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
JS函数多个参数默认值指定方法分析
2016/11/28 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
详解vuejs几种不同组件(页面)间传值的方式
2017/06/01 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
关于angularJs清除浏览器缓存的方法
2017/11/28 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
Vue 修改网站图标的方法
2020/12/31 Vue.js
Django中的Signal代码详解
2018/02/05 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
2019/08/20 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
前端实现打印图像功能
2019/08/27 HTML / CSS
Mytheresa英国官网:拥有160多个奢侈品品牌
2016/10/09 全球购物
餐饮商业计划书范文
2014/04/29 职场文书
销售员岗位职责
2014/06/09 职场文书
小学“向国旗敬礼”网上签名寄语活动总结
2014/09/27 职场文书
员工加薪申请报告
2015/05/15 职场文书
浅析MongoDB之安全认证
2021/06/26 MongoDB
Minikube搭建Kubernetes集群
2022/03/31 Servers
SQL SERVER中的流程控制语句
2022/05/25 SQL Server