web中的HTTP协议

  HTTP协议(HyperText Transfer Protocol 超文本传输协议),是浏览器接收web页面和发送web页面请求的标准协议。HTTP协议是基于TCP/IP协议的,版本号有Http1.0和Http1.1两种,现在主要使用Http1.1版本。

  HTTP协议包含大量的消息头信息,用户告诉浏览器或者服务器,该消息体想做什么...而消息体是告诉浏览器或者服务器,它也是我们添加的网页信息,具体该怎么做...

  网页在传输过程中,HTTP的消息头是十分重要的...那么PHP是如何操作消息头的呢?

 一、PHP中的$_SERVER数组

  $_SERVER数组是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。

  • 获取浏览当前页面的IP地址:

   $_SERVER['REMOTE_ADDR']

  • 防盗链技术的实现

  $_SERVER['HTTP_REFERER']:引导用户代理到当前页的前一页的地址

  示例:

      <?php
	    //http防盗链技术
	    if(isset($_SERVER['HTTP_REFERER'])){  //判断是否有该属性值(外网没有,本网有)
		  //定义字符串出现的第一个位置
		  if(strpos($_SERVER['HTTP_REFERER'],'http://localhost/phpWeb/7-25/')==0){  //判断是否来自本网站
			  echo '你好,欢迎访问';
		  }else{
			  header("Location:err.php");
		  }
	    }else{  

			header("Location:err.php");		//重新定义报头信息,进行跳转
		  }
      ?>

 二、PHP中的header函数

  PHP中的header函数用于服务器端重新定义http的消息头。

  • 跳转到另一个页面

  header('Location:url');

  • 网页禁止缓存

  //由于浏览器的差别,不同浏览器有不同的禁缓存结构,通常三个都写...

  header('Expires:-1');  

  header('Cache-Control:no-cache');

  header('Pragma:no-cache');

  • 等待几秒后自动跳转到另一页面

  示例:

    <?php
          echo '5秒后自动跳转到百度首页面';
	  header('Refresh:5,url=http://www.baidu.com');    //等待5秒后,自动重新定向到百度首页面
    ?>
  • 文件下载

  header('Content-type:application/octet-stream');
  header('Accept-Ranges:bytes');
  header("Accept-Length:$file_size");
  header("Content-Disposition:attachment;filename=".$filename);

function filedown($filename){

		//转换文件名编码,防止乱码(针对中文汉字,php文件中需将utf-8码转换为gb2312。古老的文件系统只识别gb2312码)
		$filename=iconv('utf-8','gb2312',$filename);

		//判断文件是否存在
		if(!file_exists($filename)){
			echo '文件不存在';
			return ;
		}

		//计算文件大小
		$file_size=filesize($filename);

		//返回文件
		header('Content-type:application/octet-stream');
		header('Accept-Ranges:bytes');
		header("Accept-Length:$file_size");
		header("Content-Disposition:attachment;filename=".$filename);

		//打开文件
		$fp=fopen($filename,"r");
		
		$buffer=1024;    //一次读出多少内容,单位(byte)
		//读取文件并输出
		while(!feof($fp)){   //判断文件是否读完
			$res=fread($fp,$buffer);
			echo $res;
		}

		//关闭文件
		fclose($fp);
	  }

 三、http请求数据时,get和post方法的区别 

  1、安全性:get方法请求数据时,数据显示在地址栏和http请求行中

        post方法请求的数据时,数据放在消息体中,更安全。

  2、提交的数据量大小:get请求的数据量大小为(2k+35)字节

              post无限制(由于数据在消息体中)

  3、利用收藏夹收藏页面时,get方法更有利于保存..

 

 四、http响应状态码

  服务器端响应格式:HTTP版本号   状态码   原因

  状态码:

  100~199:表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程

  200~299:表示成功接收请求并已完成整个处理过程,常用200

  300~399:为完成请求,客户需进一步细化请求,例如,请求的资源已经移动到一个新地址,常用302、304

  400~499:客户端的请求有错误,常用404

  500~599:服务器端出现错误,常用500

  

 

 

 

posted @ 2015-07-26 10:14  咸稀饭  阅读(297)  评论(0编辑  收藏  举报