轻松学PHP
上QQ阅读APP看书,第一时间看更新

1.1 URL相关知识

在Web编程领域中,一切皆“请求”。下面是一些常见的请求场景。

◆ 用户打开百度搜索自己需要的信息。

◆ 电商网站通过顺丰快递物流接口获得商品快递信息,并向用户展示。

◆ 微信通过我们传递过去的支付回调URL告知用户支付情况。

◆ 调用运营商短信接口进行发送短信的操作。

◆ 调用天气预报接口获得当地或某地天气信息并展示在网站或者APP上。

◆ 调用百度语音REST API接口进行文字转语音操作,从而实现APP支付结果语音提示。

◆ 调用百度图片审核接口实现对色情、恐怖、不雅等图片的审核。

◆ 调用地图接口进行药店的维护,从而实现向用户展示附近药店的功能。

◆ 调用地图接口进行房源的维护,从而实现向用户展示附近房源的功能。

上面这么多场景,都说明了一个问题,即在Web编程领域,一切皆请求,且URL在请求中却占着重要的角色。在本书中,如果没有特殊说明,主要讲解的是以HTTP协议为主的URL。

1.1.1 陌生而熟悉的URL

图1-1所示的是在百度里面搜索关键词“怎么自学PHP”的检索结果,想必正在看本书的你,已经这样操作了无数次。在图中除了检索结果外,我们还看到了一个网址https://www.baidu.com/s?wd=怎么自学PHP&rsv_spt=1……,这个网址其实就是一个URL。

图1-1 用百度搜索怎么自学PHP

1.1.2 URL的组成

图1-1中的URL是千千万万个URL中的一个,它仅是一个特例,那么一个完整的URL到底是什么样的呢?下面我们来揭开它的神秘面纱。

图1-2所示的是一个完整的URL框架,下面我们来对它进行解剖分析。

图1-2 一个完整的URL

◆ http:表示这是一个基于HTTP协议的URL,当然还可以取https和ftp等。

◆ username:表示需要使用这个用户名进行权限访问,必须和password配合使用。

◆ password:参见上面的username。

◆ hostname:IP地址或域名,用于表示将这个请求发送到什么地方。

◆ 9090:端口号,如果没有提供则默认是80端口。

◆ path:路径,表示将请求发送到hostname的什么位置进行处理。

◆ arg=value:查询参数,对应图1-1中URL的“wd=怎么自学PHP&rsv_spt=1”。

◆ anchor:锚点,常用于实现页面内跳转,比如从页面的一个地方跳转到另一个地方。

对比图1-1中的URL和图1-2中的完整URL框架,我们发现username、password、9090(port)和anchor不是必需的,但username、password在FTP类型的URL中非常常用。

PHP提供了一个分析URL组成的内置函数parse_url,我们将在后面的章节中对其进行讲解。

1.1.3 非常优秀的Chrome浏览器

目前常用的浏览器有微软的IE、谷歌的Chrome和Mozilla的Firefox,其他国内的浏览器都是基于这些浏览器开发的。对于开发者来说,有一款好用的浏览器是非常重要的,前端程序员常用的是Firefox,后端程序员常用的是Chrome,所以请首先在计算机中安装Chrome浏览器。

安装好Chrome之后,打开它并按键盘上的F12或者Ctrl + Shift + I快捷键开启浏览器的开发者工具,如图1-3所示。

图1-3 Chrome浏览器的开发者工具

如图1-3所示,我们可以看到开发者工具包含了几个部分,下面对其进行介绍。

◆ Elements:在这里可以看到目前页面的全部HTML源代码,我们可以对其进行编辑,同时还可以动态地设置某个HTML元素的CSS属性。

◆ Console:在这里可以看到打印的一些信息,它在调试JavaScript的时候非常有用。

◆ Sources:在这里可以看到目前页面都有哪些图片。

◆ Network:在这里可以看到访问这个页面的时候,浏览器发送了哪些请求。

◆ Application:在这里可以看到目前页面的Cookie、Session Cookie和本地存储、基于JavaScript的数据库存储及离线资源等。

作为PHP程序员,利用好上面的几个功能就足够了。

提示

在本书后面的所有章中,如果没有特殊说明,浏览器统一指Chrome浏览器,浏览器开发者工具统一指Chrome浏览器的开发者工具。首次打开没有内容的话,你按Ctrl + F5刷新页面就可以了。

1.1.4 URL编码

下面我们在百度搜索关键词“怎么自学PHP”,然后打开浏览器开发者工具,看看到底浏览器发送的请求是什么,如图1-4所示。

图1-4 Chrome浏览器的开发者工具

如图1-4所示,我们发现“怎么自学PHP”变成了一系列的%字符系列,这就是URL编码。

为什么要进行编码呢?因为RFC 1738规定URL只可以包括字母数字等很小部分的英文字符。为了传递中文等特殊字符,就必须进行编码,PHP提供了两个常用的编码解码函数:urlcode和urldecode。