响应的信息
~~~
HTTP/1.1 200 OK /状态码 200请求成功
Date: Sun, 16 Oct 2016 06:49:21 GMT 【告诉浏览器,请求页面的时间】
Server: Apache/2.4.10 (Win32) OpenSSL/0.9.8zb PHP/5.3.29 【告诉浏览器,服务器的情况】
X-Powered-By: PHP/5.3.29
Content-Length: 145 【返回的内容长度】
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Content-Type: text/html 【文档类型】
~~~
## 状态码说明
100 接收成功
200 接收成功,完成整个过程
300
302 资源已经移动到新地址
400 客户端错误
500 服务器端错误
**要改变响应的头的内容,就在header里面写内容**
header 可以向Http响应里面写东西,改变一个回应的头,状态码302
header("Location:新页面");
~~~
HTTP/1.1 302 Found
Date: Sun, 16 Oct 2016 08:24:55 GMT
Server: Apache/2.4.10 (Win32) OpenSSL/0.9.8zb PHP/5.3.29
X-Powered-By: PHP/5.3.29
Location: index.php
Content-Length: 22
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
~~~
看到location后,请求回到浏览器,跳转是从浏览器发生的
![](https://box.kancloud.cn/335d7acc90eda6279c6674b78d5de809_711x450.png)
404该页面不存在
304资源没有修改,无需再存取
第二次打开页面,图片会从缓存里面取,所以图片的信息是304,服务器看到请求的资源的修改时间和实际资源的时间一致,就不会返回信息,而是从缓存中读取。
~~~
HTTP/1.1 304 Not Modified
Server: bfe/1.0.8.18
Date: Sun, 16 Oct 2016 08:50:21 GMT
Connection: keep-alive
ETag: "1ec5-502264e2ae4c0"
Expires: Wed, 14 Oct 2026 08:50:21 GMT
Cache-Control: max-age=315360000
~~~
![](https://box.kancloud.cn/861a16c3ccd2ecc185e2bd464f497030_605x338.png)
![](https://box.kancloud.cn/1c96f1b0f919cd332b1130d7949c06f8_580x151.png)
### 延时跳转
~~~
header("Refresh:3;url=http://www.baidu.com");
~~~
## 禁用缓存设置
通过http响应控制页面缓存,默认情况浏览器会缓存页面,不同浏览器缓存时间不一样
~~~
header("Expires:-1");
header("Cahce-Control:no_cache");
header("Pragma:no-cache");
echo "hello,cache";
~~~
## 文件下载
文件基本知识
文件类型:
a. 文本文件——记事本里面的
b. 二进制文件 图片,视频,音频
步骤:
1. 判断文件是否存在
2. 打开文件 $fp=$fopen("a.txt","r+"); //r+读写方式,$fp是指向这个文件的指针
3. 打开方式
4. 读到内存里面 fread($fp);
5. 操作,添加,修改
6.关闭文件 fclose($fp);
![](https://box.kancloud.cn/99c3d6fe9e4b3f9c4bf747e18c350af2_653x487.png)
**字符转码**
`$file_name=iconv("utf-8","gb2312",$file_name);`
~~~
$file_name="a.jpg";
$file_name=iconv("utf-8","gb2312",$file_name);
$file_path="../images/".$file_name;
//1.打开文件
if(!file_exists($file_name)){
echo "文件不存在";
return;
}
$fp=fopen($file_name,"r");
//获取文件大小
$file_size=filesize($file_name);
//下载文件需要的头header
//返回的文件
header("Content-type:application/octet-stream");
//按照字节返回
header("Accept=Ranges:bytes");
//返回文件大小
header("Accept-Length:$file_size");
//返回的文件名
header("Content-Disposition:attachment;filename=".$file_name);
//向客户端会送数据
$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);
~~~