php每次读url一模一样,t-t

Http协议

Http协议概述

协议: 就是事先的一种约定、规则、规范、标准。(租房合同、工作合同)。

HTTP协议:HyperText Transfer Protocol 超文本传输协议,客户端(浏览器端)与WEB服务器端之间的交互协议。当浏览器和服务器进行数据交换时,html文件、图片、CSS、JS等都是基于HTTP协议进行传输的。

HTTP协议有两个版本: 1.0 和 1.1,目前使用的基本都是1.1

特点:

通常是基于 B/S 结构软件的。

无连接: 浏览器向服务器发送一次请求,服务器响应一次,链接即结束。

无状态: 无记忆。 服务器不能记住哪个浏览器访问过。

无连接 – 没有持久化链接当浏览器地址栏输入 www.baidu.com/index.html,按下回车时。浏览器向服务器发送请求。

服务器找到index.html文件返回给浏览器之后,本次链接断开。

如果在点击该页面中任何一个链接,则重新建立一次链接。客户端发送请求,服务器响应。之后又断开链接。

fabb8d5bb0474f5e52bcea3005084eb1.png

请求和响应

HTTP协议主要分为两大部分:

请求: 访问服务器的任何一个文件都是一次请求

响应: 服务器处理请求,将结果返回给浏览器。

请求( request / http request)(请求报文)

客户端(浏览器)向服务器索要数据时遵循的协议

请求分为3个部分: 请求行 请求头 请求主体

请求行: 请求方式、请求URL地址、协议版本号

请求头: 主机域名,客户端(浏览器)的信息等

请求主体: 发送给服务器的数据,get和post都会通过请求主体将数据发送给服务器

可以使用Chrome tools 或者 firebug 来查看请求和响应的信息(F12)

主要请求项:

host:

主机名和端口号,80端口默认不显示

accept: 可接受的程序类型

accept-encoding: 可接受的压缩类型

accept-language: 可接受的语言类型

cache-control: 缓存控制

案例1: 访问 localhost/php4/code/http/index.html 文件

74abd677fb940a1c63d0c34e65074995.png

通过F12进行查看

c40a7f710bdb681231ce91221444646a.png

点击 index.html就能看到右侧的三个信息

989df69926242e573241273d7842063e.png

bbbe8183ef0a47f78ef6883205c5dd2a.png

案例2: index.html表单数据提交到index.php文件

f1dd46254aa5341810eb5b317d8f3788.png

8ca57ef41e167dfdc63ff529b6b0d0ec.png

post方式提交的数据叫 FormData,以字符串形式将数据进传递

15a5753b3cccc5bcc9fd8c281137b9f5.png

案例3: index.html页面中a标签跳转到get.php文件

0af7570d46b65855bf354f44372bd954.png

0374460059a836d2750d7a368ffe3931.png

4473f8be5514f64b445347a583aa94c7.png

get传值叫做 Query String Parameters

5dd5ebf696aec35d4ce2b03c2011d511.png

响应( response / http response)(响应报文)响应也分为3部分:

响应行

响应头

响应主体

响应行: 协议版本号、响应结果

状态码

响应头: 主要是服务器端的信息

响应主体: 就是从服务器返回给客户端的数据

主要响应项:

content-type: 响应内容类型,

content-type:text/html,服务器告诉浏览器,返回的这部分数据是文本类型,使用html方式来解析即可。

content-length: 响应内容的长度 ,content-length:336, 从服务器返回给浏览器的数据总长度为336字节

案例1: 访问 localhost/php4/code/http/index.html 文件时的响应信息

071b10c1ed233f6cafe6e17bdfa7a237.png

161cdd9ee86e2398771c8904578cd4d0.png

案例2: index.html表单数据提交到index.php文件的响应信息

案例3: index.html页面中a标签跳转到get.php文件的响应信息

状态码

常见的状态码如下:

200 ok ----- 请求成功

302 redirect|Found ----- 重定向

304 not modified ----- 缓存文件

403 forbidden ----- 禁止访问 (没有权限访问)

404 Not Found ----- 未找到页面

500 internal server error ----- 服务器内部错误 (可能是服务器本身有问题,或者代码错的太离谱)

header响应头设置

设置响应类型浏览器发起请求的方式是多样的,当发起请求后服务端会有对应的内容响应过来,浏览器会根据响应头==Content-Type==来对响应的内容进行解析

content-type主要的响应类型是 text/html

其他常见类型 : text/css text/javascript image/png image/jpeg image/gif

注意:

所有的响应类型都是 大范围/小类型, 千万不能写反

案例1: php绘制的验证码 verify.php

b70cacbd2581ce88c35ff3aa8f177dda.png

9552f58be5b51190efde44c37121bbf3.png

如果改为 text/html

761d0fef7dd754b6e4bace6dbe17b075.png

d507443253f04a4cb91f16f756d2c158.png

案例2: link标签发送请求

① 创建html文件,使用link标签引入一个php文件

75c2507f5ce47ab243fcfdc092acc9cf.png

② 在h1.php文件中,设置响应类型(content-type为css)

f1b103435d9bcf78d1b76f60acb81846.png

访问结果:

e3a376a2dd3b934f1760f633ca15c788.png

指定字符集

中文字符集: utf-8 gb2312 gbk

header('Content-Type:text/html;charset=utf-8');

header('Content-Type:text/html;charset=gb2312');

页面乱码问题处理方式:

页面乱码是因为 文件编码 和 页面指定编码 不一致,所以解决该问题就是要 统一文件编码和页面指定编码

① 在页面中设置 header ,编码指定为 utf-8

② 将文件的编码格式,指定为utf-8 (使用sublime,将保存格式设置为 utf-8 或者 使用editplus另存为文件时,设置utf-8)

如果 header设置为 utf-8,则文件编码格式也要设置为 utf-8

如果 header设置为 gbk,则文件编码格式要设置为 ANSI

① 在sublime创建charset_utf8.php

299a951530629eaa037236e19ff0fdb5.png

访问结果:

16a8b6a0c0a0d42a45ff087118cd809c.png

② 在windows中直接创建 charset_gbk.php

e9ecdc1400b22eb69fe6a4096d588a9f.png

访问结果:

31162fd61bd64f8e441b6d58bf88123c.png

原因:

sublime创建的文件是utf-8编码的,和页面中header设置的字符集一致,所以能正常显示。

windows创建的文件是ANSI编码的, 而页面中header设置的字符集是utf-8,两者不一致,所以乱码了。

解决方案:

① windows创建的文件,header要设置为 gb2312或者gbk

② 将windows创建的文件,改为utf-8编码

修改文件编码可以使用editplus或者sublime都行

5261bf39faaf097094d516e7f115ea55.png

b7bcae3c2d652992568f5870a713b33d.png

现在我们常用的sublime和vs,创建的都是utf-8编码格式的文件,所以,header要设置为 utf-8

页面重定向header('location:页面地址');

header('refresh:2;url=页面地址');

98933d5cfda6bb843e7c7962775fb7c8.png

扩展内容:

fdaee73493904b5105e2994dcbeb004a.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值