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 相关文章推荐
jq的get传参数在utf-8中乱码问题的解决php版
Jul 23 PHP
PHP安全防范技巧分享
Nov 03 PHP
PHP APC配置文件2套和参数详解
Jun 11 PHP
Yii查询生成器(Query Builder)用法实例教程
Sep 04 PHP
19个Android常用工具类汇总
Dec 30 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
Feb 28 PHP
Windows下php+mysql5.7配置教程
May 16 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
Apr 04 PHP
postman的安装与使用方法(模拟Get和Post请求)
Aug 06 PHP
如何让PHP编码更加好看利于阅读
May 12 PHP
TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法
Jun 03 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
绿山咖啡和蓝山咖啡
2021/03/04 新手入门
php入门学习知识点四 PHP正则表达式基本应用
2011/07/14 PHP
一个好用的PHP验证码类实例分享
2013/12/27 PHP
PHP封装的完整分页类示例
2018/08/21 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
2020/04/13 PHP
基于jQuery的树控件实现代码(asp.net+json)
2010/07/11 Javascript
Javascript之旅 对象的原型链之由来
2010/08/25 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
微信小程序之蓝牙的链接
2017/09/26 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
2018/09/03 Javascript
详释JavaScript执行环境与执行栈
2019/04/02 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
python实现带验证码网站的自动登陆实现代码
2015/01/12 Python
python实现批量下载新浪博客的方法
2015/06/15 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
2017/08/23 Python
教你用一行Python代码实现并行任务(附代码)
2018/02/02 Python
Python图像处理之图片文字识别功能(OCR)
2019/07/30 Python
python实现复制大量文件功能
2019/08/31 Python
python模块导入的方法
2019/10/24 Python
Python找出列表中出现次数最多的元素三种方式
2020/02/24 Python
HTML5中drawImage用法分析
2014/12/01 HTML / CSS
金融专业毕业生推荐信
2013/11/26 职场文书
护士进修自我鉴定
2014/02/07 职场文书
《春雨》教学反思
2014/04/24 职场文书
个人房屋转让协议书范本
2014/10/26 职场文书
小学运动会开幕词
2015/01/28 职场文书
民政局未婚证明
2015/06/15 职场文书
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python
Spring Bean是如何初始化的详解
2022/03/22 Java/Android
mysql使用 not int 子查询隐含陷阱
2022/04/12 MySQL