在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1.处理不同的图片格式 针对图片处理的公共类兼容多种图片类型的处理。 只要使用不同类型的图片使用不同的imagecreatefrom类型即可实现。
【重点!!!】 【php实现网络编程】 2.HTTP请求协议【HTTP权威指南已经看了,但是还没有深刻的认识】 HTTP用于规范b/s架构中,浏览器和服务器之间信息数据交换的规则。【超文本传输协议对应的(超文本标记语言和数据)】 浏览器和服务器之间建立的TCP连接【连接部分需要注意:三次握手已经不说。持久连接本身占用的资源问题(持久连接保证了HTTP传输的顺利)】 请求的报文信息【request】 (1)请求行【请求数据的第一行,内有三个信息组成:请求方式(http请求的方式:例如get),请求url,协议版本(http/1.1)】 (2)请求头【带浏览器发送请求里的一些状态码:进行标示等等:浏览器信息,cookie等等】【需要使用一个空行标示结束】 (3)请求主体【post方式传输数据时有主体】 所谓的网络编程就是使用语言来模拟HTTP请求和结果,实现我们需要的效果。 3.php模拟HTTP请求 在知道HTTP请求的报文之后,使用php来生成这样的请求来进行模拟。 【重点】 【爬虫也是这样通过脚本实现请求和响应结果】 php模拟get请求 (1)先连接上目标服务器【利用php函数:fsocketopen建立一个socket或者internet连接。需要使用ip和端口进行唯一识别】 (2)使用该函数连接服务器之后,返回一个资源【stream流】 对资源和连接有一个比较清晰的认识。【关键是连接,而连接占用服务器资源的问题需要对服务器方面学习】 (3)连接之后,使用请求的报文进行模拟【php生成报文信息】 (4)发送请求【利用刚刚建立的stream数据通道,以及fwrite写入到目标服务器上】 于是便实现了php模拟一个HTTP请求。【而php脚本又需要浏览器请求才能够运行,所以这里用来模拟HTTP请求的脚本相当于做了一层中间层】 php来接收响应结果: 使用fgets来接受响应数据【一行行的接收。也是stream的流】 【使用循环来接收fgets的结果:显示全文(使用feof来判断是否到了数据流的结尾)】 4.HTTP响应信息 响应信息: 【响应行】:协议版本,状态码,状态消息【状态码和状态消息是对应的:用来表示响应结果】 状态码: 200:状态正常 300:请求被重定向 400:not found 500:server内部错误 【响应头】:服务器需要告知浏览器的一些信息【例如文件类型等等】【多行表示,还需要一个空行标示响应头结束】 【相应主体】:在浏览器中用来显示的文件都是相应主体。 【HTTP报文中需要的换行都需要使用在任何系统中都是换行的\r\n】 5.php操作响应结果 利用header函数来操作响应头【响应结果中的cookie也可以进行设置】【下载的本质是将原本从服务器上传输过来的数据保存起来(而不是显示):通过响应头来(header函数)管理。(通过header对文件的类型和是否打开进行管理便能实现下载)】 利用echo来操作响应主体【这个不需要太多说,直接输出即可处理】
6.php模拟post请求【也就是操作请求主体!!】 利用php来模拟一次表单提交。 键值对的形式来形成请求主体的格式。 只不过在HTTP中的信息中,通过空行来区别,和HTTP的机制本身并没有关系。【只不过需要在请求头里标示请求主体的必要信息:主体类型,主体长度等进行主体限制】 最后使用fwrite来实现数据的发送。
【重点】 7.curl 【用于专门来模拟HTTP请求,实现各种请求的方式】 【是一个独立的工具:是一个扩展】【php_curl.dll】 curl提供了很多函数来实现HTTP请求的模拟工作 一整套的函数需要注意使用。 【因为现在的请求基本需要cookie和session,所以curl也需要带着这些会话信息进行模拟请求】 因为有这样的模拟的过程,所以我们使用验证码防止暴力破解。【通过遍历的方式来确定用户的密码】
8.控制缓存: 控制浏览器的缓存:【对浏览器保存页面进行控制】【expire】 在响应头中进行浏览器缓存控制。【使用header进行处理】
防止盗链【注意请求头中的referer来判断该文件的来源】【进行一次对来源的处理:只有访问的服务器是指定的服务器来说,图片可以被使 用和访问】
9.PDO 这里就需要封装各种不同数据库的操作方法【(代码层面)实现工厂方法,根据不同的条件进入不同的处理方法】 使用PDO时,因为PDO是数据对象,所以需要进行实例化和进行各自的调用情况实现。 PDO对象的使用:
10.桶式排序 【这种处理思路也比较另类】
一个比较常见的题目: //用来遍历一个文件夹下的所有文件 function deepDir($dir, $deep=0) {
|
2022-08-18
2022-08-17
2022-11-06
2022-08-17
2022-07-29
请发表评论