对PHP文件来说

Php能够有  html   css javascript php脚本 flash它的不同部分是在不同的地方运行的(server和client)

http协议

1. http协议是建立在 tcp/ip协议基础上

2. 我们的web开发数据的传输都是依赖于http协议

3. http协议全称是超文本传输协议

http协议的  http请求

基本结构:

请求行

消息头

消息体(实体内容)

Accept  text/html,application/xhtml+xml,application/xml;

q=0.9,*/*;q=0.8

Accept-Encoding  gzip, deflate

Accept-Language  zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3

Cache-Control  max-age=0

Connection  keep-alive

Host  localhost

User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0

GET /http2.php HTTP/1.1

Host: localhost

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Referer: http://localhost/test.php

Connection: keep-alive

说明:

GET override.php表示用get方式请求资源

Accept 表示client能够接收不论什么数据

Accept-Language 页面语言

Accept-Encoding 表示接收什么样的数据压缩格式

Host  主机

User-Agent 告诉我们server内核,操作系统

Connection 表示链接方式 不要马上断掉我们的请求

Referrer  表示我是从哪里来 防盗链

假设我这个http2.php , 不希望192.168.0.3的訪问

在server端。我们能够通过一个$_SERVER 来获取我们须要的信息

重要的有:

HTTP_HOST=localhost

REMOTE_ADDR=127.0.0.1 訪问该页面的IP

DOCUMENT_ROOT=G:/zhentuan  能够获取apache的主文件夹

REQUEST_URI=/http2.php 能够获取请求的资源名

http请求有两种基本的方式:

get/post 差别与联系

1. 安全性  get请求的数据会显示在地址栏上,post请求的数据放在http协议消息体内

2. 从能够提交的数据的大小来看:

http协议本身并没有限制数据大小

浏览器在对get和post请求做显示。 get请求数据2k+35 post请求没有限制

3. Get请求能够更好的加入到收藏夹

如今我们实际使用一些http请求,完毕一个防盗链的练习

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

//取出来

//推断$_SERVER['HTTP_REFERER'] 是不是以http://localhost开头的

if(strpos($_SERVER['HTTP_REFERER'],"http://localhost/...")==0){

echo "你能够查看信息";

}else

{

//跳转到警告页面

header("Loaction:warning.php");

}

}else

{

//跳转到警告页面

header("Location:warning.php");

}

http协议的  http响应

Location:http://www.baidu.org/index.php

HTTP/1.1 200 OK                    200 OK表示client请求成功

Server:Microsoft-IIs/5.0           表示告诉浏览器 server情况

Date:Thu,13 Jul 2000 05:46:53 GMT  告诉浏览器 请求页面的时间

Content-Length 2291                表示回来的数据有2291字节

Content-Type:text/html             文档类型

Cache-control:private              缓存

对状态码的说明

举例说明http响应在实际应用

u 302状态码的使用

比方我们如今希望,当訪问a.php页面。让其自己主动重定向到b页面

基本使用方法:

<?

php

//这句话会向client发送一个302的状态码,告诉浏览器又一次訪问b.php

//header能够向http头写入信息header — Send a raw HTTP header

header("Location:b.php");

?>

细节:302状态码也能够让其跳转到外网我去

u 404状态码的使用

一般就是该页面不存在

u 304状态码的使用

演示怎样通过http响应,控制浏览器间隔一定时间去跳转

<?php

Header(“Refresh:3;url=http://www.sohu.com”);

?

>

演示怎样通过http响应控制页面缓存。默认情况下浏览器会缓存页面

//通过header来禁用缓存(ajax)

header("Expires:-1");

header("Cache-control:no-cache");

header("Pragma:no-cache");

echo "hellow cache";

http文件下载

文件下载的原理

//对函数的说明

//1.參数说明$file_name文件名称

//2.        $file_sub_dir:下载文件的子路径 './xxx/xxx/'

function down_file($file_name,$file_sub_dir){

//死去活来,演示下载一个图片

//假设文件是中文,必须对文件名称进行转码

//原因,php文件函数,比較古老,须要对中文转码GB2312

$file_name=iconv("utf-8","gb2312",$file_name);

//1.使用相对路径

$file_path=$file_sub_dir.$file_name;

//2.使用绝对路径

//$file_path=$_SERVER['DOCUMENT_ROOT']."/down/".$file_name;

//打开文件

if(!file_exists($file_path))

{

echo "文件不存在";

return;

}

$fp=fopen($file_path,"r");

//猎取下载文件大小

$file_size=filesize($file_path);

//返回的文件

header("Content-type:application/octet-stream");

//依照字节大小返回

header("Accept-Ranges:bytes");

//返回文件大小

header("Accept-Length:$file_size");

//这里client的弹出圣诞框,相应的文件名称

header("Content-Disposition:attachment;filename=".$file_name);

//向client回送数据

$buffer=1024;

//为了下载的安全,我们最好做一个文件字节读取计数器

$file_count=0;

//这句话用于推断文件是否结束

while(!feof($fp)&& ($file_size-$file_count>0)){

$file_data=fread($fp,$buffer);

//统计读了多少个字节

$file_count+=$buffer;

//把部分数据回送给浏览器

echo $file_data;

}

// 关闭文件

fclose($fp);

}

P​H​P​中​h​t​t​p​协​议​详​解的更多相关文章

  1. opencv中 int main(int argc,char* argv[])详解

    opencv中  int main(int argc,char* argv[])详解 argc是命令行总的参数个数     argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数     ...

  2. 【转载】3D/2D中的D3DXMatrixPerspectiveFovLH和D3DXMatrixOrthoLH投影函数详解

    原文:3D/2D中的D3DXMatrixPerspectiveFovLH和D3DXMatrixOrthoLH投影函数详解 3D中z值会影响屏幕坐标系到世界坐标系之间的转换,2D中Z值不会产生影响(而只 ...

  3. CSS中伪类及伪元素用法详解

    CSS中伪类及伪元素用法详解   伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的 ...

  4. SVN组成中trunk,branches and tags功能用法详解

    SVN组成中trunk,branches and tags功能用法详解  我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说 ...

  5. UIViewController中各方法调用顺序及功能详解

    UIViewController中各方法调用顺序及功能详解 UIViewController中loadView, viewDidLoad, viewWillUnload, viewDidUnload, ...

  6. 单元测试系列之四:Sonar平台中项目主要指标以及代码坏味道详解

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6766994.html 众所周知Sona ...

  7. 详解Android中的四大组件之一:Activity详解

    activity的生命周期 activity的四种状态 running:正在运行,处于活动状态,用户可以点击屏幕,是将activity处于栈顶的状态. paused:暂停,处于失去焦点的时候,处于pa ...

  8. 连接池中的maxIdle,MaxActive,maxWait等参数详解

    转: 连接池中的maxIdle,MaxActive,maxWait等参数详解 2017年06月03日 15:16:22 阿祥小王子 阅读数:6481   版权声明:本文为博主原创文章,未经博主允许不得 ...

  9. SQL Server中通用数据库角色权限的处理详解

    SQL Server中通用数据库角色权限的处理详解 前言 安全性是所有数据库管理系统的一个重要特征.理解安全性问题是理解数据库管理系统安全性机制的前提. 最近和同事在做数据库权限清理的事情,主要是删除 ...

随机推荐

  1. 数据库mysql原生代码基本操作

    创建表: CREATE TABLE `biao` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '测试表', `createtime` ...

  2. Spring-Security-OAuth2微信网页授权

    @Controller public class Controller1 { @Autowired private OAuth2ClientContext context; @Bean @Scope( ...

  3. jQuery自适应倒计时插件

    jQuery自适应倒计时插件 在线演示本地下载

  4. Node.js的运行

    nodejs的运行 首先要在你的电脑上下载node.js并安装,大家可以去官网下载 1.第一种方法:去官网下载git,安装好后,在桌面上单击鼠标右键,会有一个Git Bash Here,然后在新建一个 ...

  5. 个人作业——Alpha项目测试

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/ 这个作业要求在哪里 https://edu.cnbl ...

  6. 如何用putty链接服务器端,并安装wdcp

    首先把自己阿里云的磁盘格式化然后重启 自己下载一个PuTTY 打开后输入自己的Ip地址端口号默认是22 会跳出一个yes 跟no界面,点击yes 会进入一个类似cmd界面 直接输入root,然后会提示 ...

  7. HTTP05--HTML常用知识

    一.URL地址含义 需要搞清URL和URI的差别,以及QueryString的含义. 二.GET和POST的区别 详细介绍可参考文章:http://zengrong.net/post/1802.htm ...

  8. 查看/进入mac根目录的方式

    1.通过“前往文件夹”快捷键组合 (1)打开finder,点击上部菜单栏“前往”,然后“个人”,直接跳转. (2)快捷键组合:command + shift + G:注意:打开finder后,再快捷键 ...

  9. CaffeMFC:caffe.pb.h(2525): error C2059: syntax error : 'constant'

    下边的语句会报 syntax error : 'constant'. static const DimCheckMode STRICT = V1LayerParameter_DimCheckMode_ ...

  10. CDR真实图片转水墨画效果制作教程

    CorelDRAW创造性滤镜组是最具有创造力的滤镜,使用里面的散开滤镜能够实现类似于水墨的表现手法,然后再结合图层的合并模式,让您的图片产生意想不到的视觉效果.本文将利用CorelDRAW软件中提供的 ...