• 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库
没有结果
查看所有结果
  • 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库
没有结果
查看所有结果
没有结果
查看所有结果

PHP 核心编程(三)HTTP 协议、 文件操作、 页面静态化

Mr.Lee 由 Mr.Lee
2018年5月18日
在 PHP, PHP核心编程
0
PHP 核心编程(三)HTTP 协议、 文件操作、 页面静态化
0
分享
0
浏览

文件操作、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也可以给文件重命名。

打开文件夹

例题

其他与文件夹相关的函数

  1. is_dir():是否是文件夹
  2. basename():获取文件名
  3. dirname():获取目录路径
  4. 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>&nbsp;”;

?>

HTTP协议

简介

  1. 超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广网络协议。所有的www文件都必须遵守这个标准。设计HTTP是为了发送和接收HTML页面。
  2. http协议是B/S模式的访问方式
  3. 断开式连接,服务器处理完客户端请求后立即关闭当前连接
  4. 无状态性:服务器不记录用户的状态,也就是说用户多次访问服务器,服务器无法识别是否是同一个用户。
  5. http协议分为HTTP请求协议和http响应协议。

http请求报文格式

  1. http请求报文=请求行+请求头+空行+请求主体

  1. 请求行:

    1. 语法:请求方式+URL地址+协议版本
    2. 请求方式有:GET、POST
    3. URL地址必须从根目录开始匹配
    4. 协议版本是“HTTP/1.1”
    5. 通过\r\n表示行结束

  1. 请求头:

    1. 格式:头标识:头数据
  1. 请求主体

    1. 如果是GET请求没有主体数据
    2. 如果是POST请求提交的数据就是主体数据

PHP模拟GET请求

客户端要访问页面1,通过页面1做代理去访问页面2

代码实现

PHP模拟POST请求

脚下留心:POST必须大写。

在index.php页面中获取数据

http响应报文格式

http响应报文由:响应行+响应头+空行+响应主体

  1. 响应行:协议版本+返回状态吗

  1. 状态码分类总结

    1. 2xx:正常
    2. 3xx:重定向错误
    3. 4xx:客户端错误
    4. 5xx:服务器错误
  2. 常见状态码:

    1. 200 正常
    2. 301 临时重定向 302 永久重定向
    3. 404 找不到文件
    4. 403 拒绝访问
    5. 500 服务器错误
  3. 响应头
  4. 响应主体:所有的输出都是响应主体

操作响应头

通过header()函数操作响应头

脚下留心:header()函数用了操作响应头,在header()函数之前是不能有任何输出的。一旦有输出就表示响应头已经结束,不能操作头信息。

可以通过更改输出缓存的大小使得header()前面可以有输出。

将输出缓存改为off或0就表示关闭缓存

响应头的应用

文件下载

正常情况下,浏览器接受到主体内容进行打开操作,通过操作响应头告诉浏览器将响应主体作为附件。

图片下载

octet:八位字节

stream:流

控制器浏览器缓存

Expires:过期时间

页面静态化

静态页面

动态页面

执行效率

高

低

数据修改

不方便

方便

页面静态化可以将静态页面和动态页面的优点结合起来。

通过输出缓存实现页面静态化

原理:将缓存中的生成完毕的静态的HTML读取出来 并写到静态文件中

通过file_get_contents实现页面静态化

通过curl扩展实现页面静态化

要在php.ini中开启curl扩展

例题

标签: HTTP 协议文件操作页面静态化
上一篇文章

PHP 核心编程(四)Cookie、 Session、 响应头、 短连接、 请求头、 长链接

下一篇文章

PHP 核心编程(二)Mysql 扩展、 数据库连接、 笑话增删改查

下一篇文章
PHP 核心编程(二)Mysql 扩展、 数据库连接、 笑话增删改查

PHP 核心编程(二)Mysql 扩展、 数据库连接、 笑话增删改查

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Search

没有结果
查看所有结果

About Me

个人随笔

Winston Lee

Programmer

Hello & welcome to my blog! My name is Winston Lee and am a programmer and am keen on sharing.

Winston Lee

About Me

Hello & welcome to my blog! My name is Winston Lee and am a programmer and am keen on sharing.

Categories

  • AJAX
  • BootStrap
  • CodeIgniter
  • CSS
  • DedeCMS
  • GIT
  • HTML
  • Javascript
  • Jquery
  • Laravel
  • Laravel在线教育平台
  • Linux
  • Memcache
  • MongoDB
  • MVC
  • Mysql
  • Nginx
  • Node
  • PDO
  • PHP
  • PHP7
  • PHP基本语法
  • PHP核心编程
  • Redis
  • Smarty
  • Socket
  • SVN
  • Swoole
  • TP3.2
  • TP3.2商城
  • TP5.0
  • TP5.0商城
  • XML
  • Yaf
  • Yii
  • Yii手机直播
  • 二次开发
  • 优化方案
  • 前端技术
  • 前端框架
  • 后台框架
  • 基本操作
  • 微信公众号
  • 数据库
  • 未分类
  • 混合APP
  • 源码Blog项目
  • 版本控制
  • 环境搭建
  • 移动端开发
  • 网站优化
  • 资料
  • 面向对象
  • 面向对象编程
  • 页面静态化

Tags

DOM Json RBAC 事件 传参 函数 分页 判断语句 匿名函数 变量 图片上传 存储过程 安装 对象 封装 属性 接口 控制器 数据库操作 数据类型 数据表 数组 文件上传 无刷新分页 权限 标签 模型 正则 流程控制 目录结构 算法 类 索引 继承 缩略图 表关系 视图 路由 运算符 选择器 递归 配置 错误处理 页面静态化 验证码
  • 首页
  • 前端
  • 前端框架
  • PHP
  • 数据库
  • 优化
  • 后台框架与实战
  • 移动开发
  • 二次开发
  • Linux
  • 版本控制
  • Node.js
  • 资料库

沪公网安备31011502400873 | 沪ICP备2024050435号-3

没有结果
查看所有结果
  • 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库

沪公网安备31011502400873 | 沪ICP备2024050435号-3