web工作原理
HTTP协议
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。
HTTP 请求
HTTP 请求可以使用多种请求方法。与PHP相关的最常用请求方式有两种:
GET -- 请求指定的页面信息,并返回实体主体。
POST -- 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。 POST 请求可能会导致新的资源的建立或已有资源的修改。
首先第一步,用户在浏览器中输入网址,如“www. baidu.com”",浏览器会去请求DNS服务器,DNS是一种组织成 域层次结构 的计算机和网络服务命名系统,应用于TCP IP网络,从事将主机名或域名转换为实际IP地址的工作。将“www.baidu.com"翻译成百度对应的IP地址。
然后第二步,DNS服务器将翻译过来的IP地址传递给浏览器。
第三步,浏览器通过IP地址找到IP对应的Web服务器(通常是Apache或者是Nginx),建立TCP连接,并向服务器发送HTTP Request (请求)包。
第四步, Web服务器发现用户访问了后缀为“php”的文件,如index.php文件,那么服务器就会访问PHP解析引擎。
第五步 ,PHP在解析时, 发现需要使用数据库。于是,连接数据库,访问数据库服务器(可能是MySQL、SQL Server、Oracle 等)。
第六步,数据库根据查询条件,查找数据,并将数据返回给PHP引擎。
第七步,PHP引擎拼接数据,解析成HTML, 返回给Web服务器。
第八步, Web服务器将HTML文件返回给浏览器,浏览器开始解析HTML文件,此时, 用户在浏览器中就能看到访问的网站内容。
认识HTML表单
为了实现浏览器和服务器的互动,可以使用HTML表单搜集不同类型的用户输入,将输入的内容从客户端的浏览器传送到服务器端,经过服务器上的PHP程序进行处理后,再将用户所需要的信息传递回客户端的浏览器上,从而获得用户信息,可使用HTML表单的情景有很多,例如用户注册、登录、个人中心设置等页面。
在HTML中,使用<form>标签,即可创建个表单。 表单结构如下:
<form method="post" action="xxx">
......表单元素
</form>
其中表单元素input格式
<input type="text" name="fname" value="text" />
type -- 指定元素的类型。text、password、checkbox、radio、submit、reset、file和 button等,默认为 text。
name -- 指定表单元素的名称。
value -- 元素的初始值。
举个栗子:
<html>
<body>
<form method="post" action="test.php">
用户名:<input type="text" name="name" />
密码:<input type="password" name="password" />
<input type="submit" value="提交" />
</form>
</body>
</html>
PHP获取表单数据
在PHP中提供了两种与Web页面交互的方法,一种是通过Web表单提交数据即POST方式,另一种是通过URL参数传递即GET方式。
1.获取POST方式提交的表单数据
语法:$_POST[] -- 方括号内是对应表单元素的name属性的值
举个栗子:这里使用上一个栗子中的form表单。则新建一个test.php文件。
<?php
$name = $_POST['name']; //获取接收的用户名
$password = $_POST['password']; //获取接收的密码
echo '接收到的用户名:'.$name.'<br>';
echo '接收到的密码:'.$password.'<br>';
print_r($_POST); //直接$_POST代表接收的所有数据组成的数组
?>
2.获取GET方式提交的表单数据
GET方式是<form>表单中metlod属性的默认方法。使用GET方式提交的表单数据被附加到URL后,并作为URL的一部分发送到服务器端。在程序的开发过程中,由于GET方式提交的数据是附加到URL上发送的,因此,在URL的地址栏中将会显示“URL+用户传递的参数”。
http://url?name1=value1&name2=value2.....
举个栗子:
<!DOCTYPE html>
<html lang="en">
<body>
<form action="#" method="get" >
用户名:<input type="text" name="name" />
密码:<input type="password" name="password" />
<input type="submit" value="提交" />
</form>
</body>
</html>
网友评论