重蔚自留地php学习第四十一天——http协议传输教程

回顾

PHP操作mysql

开启mysql扩展

PHP如何操作mysql

  1. 连接认证
  2. SQL操作(PHP是准备和发送SQL以及接受SQL执行结果,mysql服务器执行SQL)
  3. 断开连接(释放内存资源,mysql回收连接资源)

分页

通过limit:limit offset,num

分页条件:每页显示数据,获取页码

插入排序

将数组前面部分的元素假设已经排好序,将后面的元素挨个跟排好序的数组元素进行比较,最终将元素插入到合适的位置。

 

HTTP协议

HTTP:hyper-text transport Protocol,超文本传输协议

超文本:超级文本,除了文字之外还包含图片,视频等等

超文本传输协议:超文本在传输过程中应该遵循的基本规则

HTTP原理

重蔚自留地php学习第四十一天——http协议传输教程

HTTP协议分为两个部分

  1. 请求:浏览器向服务器发送的消息
  2. 响应:服务器将处理结果返回给浏览器

http://www.cwhello.com:80/index.php:URL,uniformed resource locator:统一资源定位。这是web服务器提供一个虚拟的网络地址。

192.168.3.100:80 D:/server/apache/htdocs

URL的构成:

http是HTTP协议,://区分协议和域名

www.cwhello.com:80是域名:端口

/index.php:URI

/index.php:URI,uniformed resource Identify:统一资源标识,指的是服务器上web站点相对根目录的文件路径.

思考

为什么在html里面使用url和uri都能最终访问到服务器呢?

url肯定是可以找到对应的服务器的。是一个完整的请求

uri是浏览器已经记住了当前请求界面的域名,然后将uri拼凑到对应的域名上(还有可能的问价路径),从而得到一个完整的url

 

HTTP协议特点

支持客户/服务器模式:客户不单只是浏览器,凡是能发出HTTP请求的客户端都称之为客户

简单快速:只需请求方法和路径,路径是URI

灵活:任意数据,HTTP协议能够传输任何数据

无连接:每次连接只处理一个请求,请求处理之后马上关闭连接

无状态:事务处理没有记忆能力,当浏览器请求完服务器之后,再次进行请求的时候,服务器没有办法识别浏览器是否已经请求过。

HTTP请求

分为四个部分:请求行,请求头,空行,请求主体(消息体,请求数据)

请求行:请求方法         请求资源         协议版本

请求方法:当前浏览器采用什么方式向服务器产生请求,有GET和POST

请求资源:URI,文件在服务器上相对网站根目录的路径

协议版本:HTTP协议的版本,HTTP/1.0 和 HTTP/1.1(1.1版本是通用的)

请求头:就是HTTP协议的内容

空行:就是空行

请求主体:浏览器向服务器发送的数据内容。

 

HTTPwatch简单说明

重蔚自留地php学习第四十一天——http协议传输教程

HTTP请求说明

重蔚自留地php学习第四十一天——http协议传输教程

注意:

  1. 请求行中三项内容使用空格分开
  2. 请求头重每项头信息都需要换行独立存在
  3. 空行必须存在

 

常用的请求头

host:请求的域名,必须要有

accept-encoding:可以接受的编码类型(不是字符编码,指的是文件格式),如果没有该头信息,说明浏览器可以接收任何类型

referer:引用,当前请求是从哪个请求过来的

connection:连接方式,1.0版本close,1.1版本keep-alive

accept-language:可以接收的语言类型,zh-CN代表中文,如果没有该选项,那么代表浏览器可以接收任何语言类型

cookie:服务器保存在浏览器的数据,浏览器提供了一个功能能够保存数据,服务器借助于浏览器的该能力,将数据保存在浏览器端

user-agent:浏览器的信息

重蔚自留地php学习第四十一天——http协议传输教程

accept:浏览器可以接收的文件类型,如果没有指定,代表可以接收任何类型的数据

重蔚自留地php学习第四十一天——http协议传输教程

content-length:post请求时,浏览器给服务器发送是数据的长度,单位是字节

if-modified-since:get方式,会在本地产生一个缓存文件,去判断缓存时间和服务器文件修改时间

content-type:post向服务器提交数据的数据类型,比如说文件上传时候的enctype

 

HTTP协议的使用

  1. 不管是请求还是响应,都是其他软件帮忙处理
  2. 但是往往可以通过改变某些请求或者响应的头信息来实现对HTTP协议的更改。

 

使用telnet模拟HTTP请求

要先保证各位电脑的telnet客户端已经开启。

1.先开启telnet连接,找到telnet客户端。

重蔚自留地php学习第四十一天——http协议传输教程

然后勾选上telnet客户端

2.使用telnet模拟HTTP协议

2.1连接Apache服务器:telnet 域名/ip 80,然后回车

重蔚自留地php学习第四十一天——http协议传输教程

默认进去之后是黑屏的,输入的任何东西都看不到

2.2字符回显:按住ctrl+]

重蔚自留地php学习第四十一天——http协议传输教程

2.3按回车,进入到编辑界面

重蔚自留地php学习第四十一天——http协议传输教程

特点:写入东西之后,再进行删除的时候,并不会直接将内容清空(实际已经删除),需要写入其他内容来覆盖显示内容

1.模拟HTTP协议请求行:请求方式 URI 协议版本 回车

重蔚自留地php学习第四十一天——http协议传输教程

2.模拟HTTP协议请求头:Host:localhost回车

重蔚自留地php学习第四十一天——http协议传输教程

注意:每个请求头都独占一行

3.空行:在之前的基础再敲一次回车

重蔚自留地php学习第四十一天——http协议传输教程

HTTP响应

让浏览器能够正确解析服务器给浏览器返回的内容

 

HTTP响应分为四个部分:状态行,响应头,空行,消息体(响应内容)

状态行:协议版本 状态码 状态描述

HTTP/1.1   200    对状态码的描述

响应头:HTTP协议内容

空行:

消息体:响应一定会存在消息体

 

常见的响应头

server:服务器信息

date:服务器响应的时间

last-modified:当前请求文件最后被修改的时间

content-length:响应体的数据长度,单位是字节

content-type:响应体的类型

location:重定向

refresh:刷新,包含时间和指定的url

content-encodeing:响应文件的编码(不是字符集,是格式)

cache-control:缓存控制,no-cache,不使用缓存、

keep-alive:保持连接,timeout表示超时时间,Max表示系统会自动判断连接次数,所以当一个浏览器向网站发出请求最长能够timeout*max的时间内

 

一个普通响应头

重蔚自留地php学习第四十一天——http协议传输教程

如何能够通过PHP设置响应头(HTTP的协议内容)?

header函数,就是对响应头做处理。

header(‘Content-type:text/html;charset=utf-8’);

重蔚自留地php学习第四十一天——http协议传输教程

状态码

1XX:服务器接收请求,继续处理

2XX:成功

3XX:重定向

4XX:请求错误

5XX:服务器错误

 

常见状态码

200:成功,浏览器的请求已经被服务器处理完毕

302:已经跳转

304:所请求文件没有被修改,服务器告诉浏览器读取本地缓存文件即可

400:bad request,坏了的请求,请求有错误

403:forbidden,没有权限访问对应的文件

404:not found,所请求的文件在服务器不存在

502:bad gateway,服务器没有从上级服务器获得正确的结果

 

浏览器和服务器到底是如何建立在HTTP协议上工作的呢?

重蔚自留地php学习第四十一天——http协议传输教程

PHP模拟响应

  1. 设置浏览器解析的字符集编码

header(‘Content-type:text/html;charset=utf-8’);

  1. 跳转

header(‘Location:url’);

demo02_location.php

重蔚自留地php学习第四十一天——http协议传输教程

请求demo02_location.php的响应

重蔚自留地php学习第四十一天——http协议传输教程

httpwatch效果

重蔚自留地php学习第四十一天——http协议传输教程

  1. 刷新

header(‘Refresh:time,url’)

demo03_refresh.php

重蔚自留地php学习第四十一天——http协议传输教程 重蔚自留地php学习第四十一天——http协议传输教程

demo03_refresh.php的响应

重蔚自留地php学习第四十一天——http协议传输教程

刷新到其他界面

重蔚自留地php学习第四十一天——http协议传输教程 重蔚自留地php学习第四十一天——http协议传输教程

refresh和location的区别

  1. location是立即跳转,不会等到页面显示数据,就立马跳转。浏览器在解析HTTP协议的时候,碰到了location,就会马上组织HTTP协议进行二次请求
  2. refresh是在浏览器端先休息一定时间之后,再跳转。浏览器解析HTTP协议的时候,碰到了refresh,发现需要停留一定时间,再组织HTTP协议进行二次请求
  3. refresh能够将脚本内的其他内容进行先输出后跳转,而location不能显示脚本内的其他数据。
  4. 发送图片

header(‘Content-type:image/jpg’);

demo04_image.php

重蔚自留地php学习第四十一天——http协议传输教程

demo04_image.php的响应及效果

重蔚自留地php学习第四十一天——http协议传输教程

注意:content-type:image/图片类型,该图片类型要与本身图片的类型一致。不同的浏览器在识别jpg等图片的时候,需要做成jpeg

  1. 文件下载

header(‘Content-type:application/octet-stream’)

header(‘content-disposition:attachment;filename’)

demo05_download.php

重蔚自留地php学习第四十一天——http协议传输教程

demo05_download.php的响应

重蔚自留地php学习第四十一天——http协议传输教程

效果是以附件的形式来保存响应的东西。

 

PHP模拟HTTP请求

  1. PHP能够与Apache进行连接

fsockopen($domainname,$port,$errno,$errinfo,$timeout):连接Apache,发出一个请求,得到一个请求资源,得到一个连接资源

重蔚自留地php学习第四十一天——http协议传输教程

  1. PHP模拟发送HTTP请求

fwrite($handle,$string):向一个资源中写入指定内容

重蔚自留地php学习第四十一天——http协议传输教程

  1. 获得响应,就是通过fsockopen这个连接来获得响应

fgets():从一个资源中获取一行或者指定长度数据

重蔚自留地php学习第四十一天——http协议传输教程

 

  1. 输出全部数据

重蔚自留地php学习第四十一天——http协议传输教程

效果

重蔚自留地php学习第四十一天——http协议传输教程

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/10593.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
重蔚的头像重蔚管理团队
上一篇 2018年12月19日 22:16
下一篇 2018年12月24日 10:20

相关推荐

  • 详解PHP中的输出缓冲控制(Output Control)

    本篇文章带大家了解一下PHP中的输出缓冲控制(Output Control) 。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 在 PHP 中,我们直接进行 echo 、 或者 print_r 的时候,输出的内容就会直接打…

    2023年3月29日
    00
  • PHP中如何进行高性能计算和网络编程。

    随着互联网的蓬勃发展,PHP成为了其中一个常用的编程语言。作为一种面向脚本的语言,PHP对于快速构建Web应用非常方便。然而,PHP在处理大量数据和高并发时,性能问题也相当显著。那么,如何在PHP中进行高性能计算和…

    2023年5月23日
    01
  • 分享这五点解决网站打开缓慢,你学会了几点 。

    网站打开速度会直接影响到SEO优化网站用户体验,我们应该怎么做才能提高网站速度呢?今天小编整理了五点,希望能给大家有所帮助。 1、数据传输的质量不太好 数据传输质量重要包括两个方面,分别是网站网站服务器和…

    2023年3月13日
    03
  • php工厂方法模式是什么

    推荐:《PHP教程》 引言 所属:创建型模式,常用设计模式之一 工厂模式分为:简单工厂模式、工厂方法模式、静态工厂模式、抽象工厂模式。 下面为工厂方法模式。 模式概述 工厂方法就是为了解决简单工厂扩展性的问题…

    2022年6月12日
    0121
  • php的数组类型array

    标识一系列数据的“有序排列”的集合体。 php中,数组的下标可以使用整数或字符串。 数字下标常说“索引号”, 字符串下标常说“键名”。 实际上,在php的报错系统中,都叫做“index”,或offset 数组中还可以存储数组,就…

    2018年3月17日
    0234
  • PHP filesize() 函数

    filesize 作用:函数返回指定文件的大小 语法: filesize(filename) 参数: filename:必需。规定要检查的文件。 返回值: 返回文件大小的字节数,如果出错返回 FALSE 并生成一条 E_WARNING 级的错误。 filesize 示…

    2022年6月13日
    0163
  • 关于PHP正则匹配中文

    PHP 正则匹配中文 正则匹配字符集 [{4e00}-\\x{9fa5}] 注意事项: 正则表达式结尾要加上 u, 形如:/^...$/u 一、匹配全是中文 /^[{4e00}-\\x{9fa5}]+$/u 二、匹配包含中文 /[{4e00}-\\x{9fa5}]+/u 三、匹配中英文(…

    2022年6月20日
    0109
  • 重蔚自留地php学习第三十九天——mysql事物触发器函数过程

    数据备份 将数据里的数据进行保存到外部文件,从而在数据库内部数据丢失或者出错的情况下能够通过备份文件进行还原操作,从而将损失降低到最小。 对单表内的纯数据进行备份 将表中的数据(不包含结构,没有字段头信…

    2018年10月23日 MySQL自学教程
    0267

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息