同福

做个web框架(11)——请求对象TFRequest(一)输入数据【20201106】

介绍

介绍

福哥今天要带着大家完成一个系统级别的对象——请求对象TFRequest,这个对象会完成所有根用户请求相关的功能。而从用户请求里我们主要是要获取“输入数据”,输入数据包括QUERY参数、POST参数、服务器环境参数、客户端环境参数等等。

请求对象TFRequest

首先我们先建立请求对象TFRequest,程序文件保存在System/TFRequest.inc.php。

c14f1eb39a4af1fd.jpg

请求头

web应用是通过浏览器运行的,而浏览器访问网页的时候是需要先发送一个请求头数据包到服务器上,服务器根据这个请求头返回网页内容给用户的。那么请求头里包括了诸如:请求资源状态、客户端信息、请求参数等等信息。

下面给出要给出一个完成的请求头信息示例:

GET / HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
Connection: keep-alive
Host: tongfu.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36

请求方式

请求头第一个参数GET就是请求方式——REQUEST_METHOD。常用的请求方式是GET和POST,除此之外还有HEAD、PUT、DELETE、TRACE等等。不同的请求方式可以携带的输入参数也是不尽相同的,后面我们会逐步介绍。

输入数据

QUERY参数

QUERY参数俗称“GET”参数,是通过在请求资源路径后面以“?”分开的后面的字符串,这个字符串称之为QUERY_STRING,里面包含若干参数。在PHP语言里面GET参数会被存储在一个全局数组“$_GET”里面。

格式

param=value&param2=value2&param3=value3...paramN=valueN

示例

/topic/search?q=TFPHP&type=doc&cs=utf8

POST参数

POST参数是通过POST方式请求的时候,在请求头信息最后携带的字符串里携带的参数。在PHP语言里面POST参数会被存储在一个全局数组“$_POST”里面。

格式

param=value&param2=value2&param3=value3...paramN=valueN

示例

POST /topic/search HTTP/1.1
Content-Type: application/x www form urlencoded
Content-Length: 24
Connection: keep-alive
Host: tongfu.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36

q=TFPHP&type=doc&cs=utf8

环境参数

环境参数包括服务器环境参数和客户端环境参数,这两个部分的参数在PHP语言里面都会被存储在一个全局数组“$_SERVER”里面。

服务器环境参数

服务器环境就是web服务器环境,包括:服务器软件版本、PHP语言版本、PHP扩展版本、请求资源解析情况等等。

客户端环境参数

客户端环境就是浏览器环境,包括:请求方法、浏览器类型、缓存控制、请求数据类型、请求数据大小等等。

会话参数

会话参数是一个可以在一个服务器连接之内保存的数据。我们在通过浏览器浏览网页的时候,浏览器会和服务器建立一个连接,网页内容通过这个连接从服务器上下载,在切换网页的时候连接不会中断,只需要从服务器下载新网页的内容即可。那么这个连接就称为一个“会话”,服务器会根据这个连接设置一个“空间”存储一些数据,这些数据就是会话参数。在PHP语言里会话参数会被存储在“$_SESSION”数组里面。

COOKIE参数

COOKIE参数就是一个存储在浏览器上的用户数据。我们在通过浏览器浏览网页的时候,浏览器会为每个域名开辟一块“空间”用来存储一些用户数组,这些数据就是COOKIE参数。在PHP语言里COOKIE参数会被存储在“$_COOKIE”数组里面。

总结

今天童鞋们跟着福哥学习了关于用户请求的相关知识,了解了用户请求的输入数据的详细情况,知道了用户请求携带的输入数据包括很多种类。下一课我们会将这些输入数据封装到TFPHP的TFRequest对象里面,并提供一些安全处理方法。

大家客户可以自行去了解更多关于HTTP协议的知识,了解关于用户请求是更多内容~~