对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);

}

最新文章

  1. 关于JQuery(最后一点动画效果*)
  2. jquery源码学习之queue方法
  3. C语言 野指针与空指针
  4. Android UI 之 Tab类型界面总结
  5. nRF52系列——nRF52832来袭
  6. linux内核--进程地址空间(三)
  7. 网站如何防Session冒名顶替和cookie防篡改
  8. php 邮件发送代码-php邮件群发
  9. docker 1.10.3 里php出现 curl 56错误码问题解决
  10. 修改Fedora 20 启动项
  11. hdu 2851(最短路)
  12. linux在构建SVNserver
  13. 原生JS与jQuery操作DOM对比
  14. Flask速成项目:Flask实现计算机资源的实时监控
  15. PHP 匿名函数使用技巧
  16. UI动画的一些制作过程
  17. 六招让你的Ubuntu马上提速
  18. oracle中动态SQL使用详细介绍
  19. shell获取函数的返回值
  20. 如何查找论文是否被SCI,EI检索(转)

热门文章

  1. java 锁机制(synchronized 与 Lock)
  2. ansible剧本
  3. 为什么使用HttpServlet?http协议特点、servlet
  4. synchronized关键字详解(一)
  5. 【Spring】AOP
  6. zblog插件增加后台导航栏的方法
  7. JS——tab函数封装
  8. [Windows Server 2003] 安装网站伪静态
  9. java设计模式03装饰者者模式
  10. LVS部分调度算法的适应场景分析