文件操作、HTTP协议
文件夹操作
创建文件夹
注意事项:
创建文件夹模式介绍:
每个文件和文件夹都有三个权限:读权限(20=1),写权限(21=2),可执行权限(22=4)
7=1+2+4(表示读,写,执行权限都有)
5=1+4(表示读,执行权限)
例题
<?php
//mkdir(‘./aa’); //在当前目录下创建aa文件夹
//mkdir(‘./aa/bb’); //在aa文件夹下创建bb文件夹(前提aa文件夹必须存在)
mkdir(‘./aa/bb/cc’,777,true); //递归创建文件夹
删除文件夹
注意:
例题
重命名、移动文件夹
语法:rename()
例题
多学一招:rename也可以给文件重命名。
打开文件夹
例题
其他与文件夹相关的函数
- is_dir():是否是文件夹
- basename():获取文件名
- dirname():获取目录路径
- realpath():获取绝对路径
遍历文件夹
文件操作
file_put_contents — 将一个字符串写入文件
将字符串写到文件中,如果文件不存在就创建该文件,如果文件存在清空文件内容重新写入新内容。
file_get_contents — 将整个文件读入一个字符串
readfile — 输出一个文件
fopen()——打开文件
打开模式
注意:“w”是写操作,如果文件不存在就创建,如果文件存在就清空内容重新写操作。如果要继续在原来文件后天就内容,使用“a”追加。
fgets()读取一行,并且指针下移
fputs()写入一行,并且指针下移
fputs()等价于fwrite()
feof()文件指针是否到了文件结束的位置
例题
fseek()复位指针
如果一个文件要输出多次,后面的输出需要将指针复位到文件的最前面
fread()读取文件
语法:fread(文件指针,文件长度)
unlink():删除文件
is_file():判断是否是文件
file_exists():文件或文件夹是否存在
例题:诗歌的分页
运行结果:点击页码显示不同的诗歌
代码
<?php
//第一步:读取诗歌的内容
$fp=fopen(‘./shi.txt’,’r’);
$str=”;
while(!feof($fp)) {
$str.=fgets($fp).'<br>’;
}
//第三步:获取页码
$pageno=isset($_GET[‘pageno’])?$_GET[‘pageno’]:1;
//第二步:分割字符串成数组
$array=explode(‘–‘,$str);
//显示内容
echo $array[$pageno-1];
echo ‘<hr>’;
for($i=1;$i<=count($array);$i++)
echo “<a href=’?pageno={$i}’>{$i}</a> ”;
?>
HTTP协议
简介
- 超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广网络协议。所有的www文件都必须遵守这个标准。设计HTTP是为了发送和接收HTML页面。
- http协议是B/S模式的访问方式
- 断开式连接,服务器处理完客户端请求后立即关闭当前连接
- 无状态性:服务器不记录用户的状态,也就是说用户多次访问服务器,服务器无法识别是否是同一个用户。
- http协议分为HTTP请求协议和http响应协议。
http请求报文格式
- http请求报文=请求行+请求头+空行+请求主体
-
请求行:
- 语法:请求方式+URL地址+协议版本
- 请求方式有:GET、POST
- URL地址必须从根目录开始匹配
- 协议版本是“HTTP/1.1”
- 通过\r\n表示行结束
- 请求头:
-
- 格式:头标识:头数据
-
请求主体
- 如果是GET请求没有主体数据
- 如果是POST请求提交的数据就是主体数据
PHP模拟GET请求
客户端要访问页面1,通过页面1做代理去访问页面2
代码实现
PHP模拟POST请求
脚下留心:POST必须大写。
在index.php页面中获取数据
http响应报文格式
http响应报文由:响应行+响应头+空行+响应主体
- 响应行:协议版本+返回状态吗
-
状态码分类总结
- 2xx:正常
- 3xx:重定向错误
- 4xx:客户端错误
- 5xx:服务器错误
-
常见状态码:
- 200 正常
- 301 临时重定向 302 永久重定向
- 404 找不到文件
- 403 拒绝访问
- 500 服务器错误
- 响应头
- 响应主体:所有的输出都是响应主体
操作响应头
通过header()函数操作响应头
脚下留心:header()函数用了操作响应头,在header()函数之前是不能有任何输出的。一旦有输出就表示响应头已经结束,不能操作头信息。
可以通过更改输出缓存的大小使得header()前面可以有输出。
将输出缓存改为off或0就表示关闭缓存
响应头的应用
文件下载
正常情况下,浏览器接受到主体内容进行打开操作,通过操作响应头告诉浏览器将响应主体作为附件。
图片下载
octet:八位字节
stream:流
控制器浏览器缓存
Expires:过期时间
页面静态化
静态页面 |
动态页面 |
|
执行效率 |
高 |
低 |
数据修改 |
不方便 |
方便 |
页面静态化可以将静态页面和动态页面的优点结合起来。
通过输出缓存实现页面静态化
原理:将缓存中的生成完毕的静态的HTML读取出来 并写到静态文件中
通过file_get_contents实现页面静态化
通过curl扩展实现页面静态化
要在php.ini中开启curl扩展
例题