发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
协议:指的是一种约定,语法约束。用于限制数据在交互时的数据格式。
HTTP协议,用于b/s架构中,浏览器与服务器之间数据传输的规则。
HTTP协议,是一个应用层的协议,只负责程序间的数据交互格式,而不用负责程序的连接。
HTTP:超文本传输协议
一共两次数据交互;
浏览器(发出请求的程序)应该向http服务器发送什么格式的数据。
由三个子部分组成:请求行,请求头,请求主体
现行的GET请求格式如下:GET /index.php?name=itcast HTTP/1.1
请求方式 地址URL 协议版本
浏览器(请求发送端)发送给服务器端的需要服务器知道的信息。
例如:user-agent:用户代理信息,用于告知服务器,请求时谁发出的。
在服务器端,可以利用$_SERVER变量,获得该信息:
host:主机,请求需要的域名。
cookie:浏览器上的cookie数据
Accept-Language:浏览器可以接收的语言,通常用来判断浏览器语言,做多语言程序:
格式:
头标识:值
Host:shop.
User-Agent:Firefox
注意:每个头占用一行。
采用回车+换行来表示:
使用一个空行表示头信息结束
指的是浏览器请求段发送给服务器端的数据部分。
只指的是POST请求的数据。只有post请求才需要请求主体,而get没有请求主体,因为数据是在请求行中url部分传递过去的。
常规是浏览器发出请求。留啊两年期可以连接上目标服务器,并可以向目标服务器发送符合http请求协议格式的数据,此时http服务器,就知道浏览器发送了请求,做出响应。
如果模拟请求,模拟浏览器做出的工作:连接上目标服务器,发送请求数据。
PHP模拟请求:
地址,端口。
利用 fsockopen 可以完成建立连接:成功后,生成链接资源。
利用连接,目标服务器写数据。
服务器处理,做出响应。
利用连接,从目标服务器读取数据的过程。
HTTP服务器(apache)应该向浏览器(请求来源)发送什么格式的数据。
分成三部分:响应状态行,响应头,响应主体
表示具体的响应结果
HTTP/1.1 200 OK
协议版本 状态码 状态消息
常见的状态码:
200 OK 成功
404 notFound 没有找到脚本
403 Forbidden 没有权限
302 Found 重定向
500 服务器错误
完整的查看:
1xx: 信息
2xx: 成功
3xx: 重定向
4xx: 客户端错误
5xx:服务器错误
服务器告知浏览器的信息部分
date: 响应时间
GMT时间,格林威治平时
Content-Type: 主体的类型
Content-Length: 主体的长度
注意: 每个信息占用一行,行以\r\n结束,头结束有个空行
服务器发送给请求代理端的主体数据部分
发送响应头或者响应主体。
header()函数用于发送响应头
任何输出都算响应主体。
echo
var_dump()
php 标签外的html代码
都算响应主体。
例如,模拟cookie:
header 还可以发送响应行:
文件由服务器到浏览器,发生在响应时。
告知浏览器,响应的主体数据,作为附件来处理。不要打开,保存。
利用响应头:Content-Disposition:attachment
主体的处理方式:附件
下载图片:将图片的内容作为主体数据输出到浏览器端,并告知浏览器,将数据保存。
readfile()读取文件内容并输出。
告知浏览器保存的文件名:Content-Disposition:attachment
增加一个filename的选项即可:Content-Disposition:attachment; filename=xxx.xxx
完善的下载:处理文件格式
告知浏览器保存的文件类型:header('Content-Type: image/jpeg');
此时,建议使用fileinfo扩展,老获取文件格式:开启extension=php_fileinfo.dll(php.ini)
finfo_open();建立一个获取文件信息的资源。
finfo_file();利用资源获得某个文件的信息。
控制浏览器端的缓存数据。
利用响应头实现:
Expires:响应头,表示当前响应结果的有效期到什么时候:
是一个GMT时间。
date()得到是本地时间
gmdate()得到格林威治平时
告知响应数据的有效期:
禁用浏览器缓存,应该设置失效的一个时间。
为了兼容:禁用缓存还可以如下写:
利用请求头重的:referer:当前请求的来源,由哪里发出的请求。
因此程序中判断请求来源,决定是否显示该图片了:
与get请求相比,post请求数据存在请求主体。
请求行:POST URL协议
请求行头:增加对请求主体的描述部分:
Content-Type:
Content-Length:
描述的请求的主体的内容:
请求主体:是请求数据即可:
不需要\r\n结束。
模拟URL请求的客户端扩展。
php支持的一个可以快速模拟请求的功能。
开启扩展:extension=php_curl.dll(php.ini)
可能需要将动态库,拷贝到windows目录:(libeay32.dll ssleay32.dll)
curl_init();
利用函数:
curl_setopt(curl资源,选项标识,选项值);
利用选项 CURLOPT_POST 来设置是否是post请求
利用选项 CURLOPT_POSTFIELDS 来设置post 数据,支持数组形式。
在 post 数据上做操作即可:
在 post 数据 数组内,使用绝对地址前增加 @ 符号,表示该数据是个文件数据。
利用正确的用户名和密码,获得登陆标识,获得 cookie 中的 SESSIONID
请求 signinAction
http://shop./index.php?p=back&c=Admin&a=signin POST
需要使用 CURLOPT_COOKIEJAR 选项,可以设置一个保存服务器设置 cookie 的文件。
再拿着 cookie 中的 sessionID 去请求需要登陆验证脚本,服务器就认为我们认证用户,看页面。
选项:CURLOPT_COOKIEFILE 请求时,携带的 cookie 所保存的文件。
选项,CURL_RETURNTRANSFER
利用函数curl_exec(curl资源)
e:\Server\PHP\php.exe -f e:\Server\Apache\htdocs\129.php
在实际使用中,速度最快的排序算法。
体现的分治原则,分而治之
将困难的问题,拆分成相对简单的问题
解决难度N的问题的效率,要低于解决2个难度为N/2的问题
6个元素,做冒泡排序:5+4+3+2+1 = 15
2个3个元素,冒泡排序:2+1=3*2 = 6
步骤:
将分成两个部分,拆分的原则,找到参考源,将小于参考元分成一部分,将大于参考元的分层一部分:
典型的选择第一个元素作为参考元:
再对拆分的两个部分分别排序(还是使用该原则),最后将排序的结果与参考元再组合起来。当,序列号总,只有一个或者零个时,认为序列是排序好的,不用在拆分。
编程实现:
递归点:对任何一个拆分出来的部分排序方式一致,调用同一个函数完成。
递归出口:当需要排序的序列内,只有一个或者没有元素时,不需要递归,认为该序列已经排序完毕。
定义函数:
参数:
需要排序的序列:数组
采用同一个较大的数组
生成较大的数组
利用函数 var_export(); 将数据导出字符串,是符合PHP语法的定义数据的字符串:
使用 microtime 函数,获得当前的时间戳,精确的微秒。
形成一个桶:由待排序序列中,最小数,到,最大数之间所有的数的一个桶。先假设每个元素都出现0次。
一个数组,键表示数,值表示次数。
遍历所有待排序的序列元素,统计出现次数,并记录
遍历桶,将对应数量的元素得到即可!
20
21
25
26
…
30
40
41
48
49
50
..
66
67
1
0
2
PHPMyAdmin
一个web版的操作mysql的工具:默认使用mysqli作为数据库操作扩展。
MySQL-Front
Navicat For MySQL
来自: 昵称10504424 > 《工作》
0条评论
发表
请遵守用户 评论公约
一次完整的http请求的过程是怎样的?
一次完整的http请求的过程是怎样的?HTTP协议是基于TCP协议来实现的,因此首先就是要通过TCP三次握手与服务器端建立连接,一般HTTP默认...
一次完整的http请求过程是怎样的?
一次完整的http请求过程是怎样的?这时候浏览器获得了目标服务器的IP(DNS返回)、端口(URL中包含,没有就使用默认),浏览器会调用库...
Servlet认识的革命
Servlet的功能就是:提供服务器端对HTTP请求的处理;所有的Servlet都必须直接或者间接地实现javax.servlet.Servlet接口,才能在Servlet Engine上运行;Servlet的一些类和方法的说明 如果你的servlet类...
HTTP协议及其工作原理介绍
在HTTP通信中,每个HTTP请求报文都包含一个方法。用以告诉Web服务端需要执行什么具体的动作,这些动作包括:获取指定Web页面、提交内容...
HTTP客户请求的数据格式说明(转载)
HTTP客户请求的数据格式说明(转载)HTTP请求包括三部分:请求行(Request Line),头部(Headers)和数据体(Body)。其中,请求行由请求方法(method),请求网址Request-URI和协议 (Protocol)构成,而请求...
[C#]网络编程系列:HTTP协议详解
HTTP中文为超文本传输协议,从名字上很容易理解,Http协议就是将超文本标记语言的文档(即Html文档)从web服务传送到客户端的浏览器。Ht...
推荐:如何快速的呈现我们的网页
把JS跟CSS合并成一个文件 B.减小被请求文件大小,减少请求数据占用的网络带宽 压缩JS体积:删除JS中空白换行,注释,混淆把长变量换成短变量;
python爬虫从入门到放弃(二)之爬虫的原理
python爬虫从入门到放弃(二)之爬虫的原理。爬虫爬取数据时必须要有一个目标的URL才可以获取数据,因此,它是爬虫获取数据的基本依据。...
TCP/IP和HTTP协议代理
TCP/IP和HTTP协议代理。TCP/IP(传输控制协议/网际协议)是用于计算机通信的一个协议族。TCP/IP协议族包括诸如Internet协议(IP)、地址解析...
微信扫码,在手机上查看选中内容