第七章 php与web页面交互
web交互
web表单交互
当用户在网站上填写了表单后,需要将数据提交给网站服务器对数据进行处理或保存。通常表单都会通过method属性指定提交方式,当表单提交时,浏览器就会按照指定的方式发送请求。
例如,当提交方式为POST时,浏览器发送POST请求,当提交方式为GET时,浏览器发送GET请求。
当php收到来自浏览器提交的数据后,会自动保存到超全局变量中。超全局变量时php预定义的变量,可以在php脚本的任何位置使用。常见到超全局数组变量有$_POST
G
E
T
等
,
通
过
P
O
S
T
方
式
提
交
的
数
据
会
保
存
到
_GET等,通过POST方式提交的数据会保存到
GET等,通过POST方式提交的数据会保存到_POST中,通过GET方式提交的数据会保存到$_GET中。
为了使大家更好地掌握如何获取表单数据,接下来通过一个用户登录的案例来演示,如
login_php
当表单被提交时,表单中具有name属性的元素会将用户填写的内容提交给服务器,php会将表单数据保存在
P
O
S
T
数
组
中
。
_POST数组中。
POST数组中。_POST是一个关联数组,数组的键名对应表单元素的name属性,值是用户填写的内容。因此,当要接收表单提交的用户名和密码时,可以用如下代码来实现。
if(isset(KaTeX parse error: Expected 'EOF', got '&' at position 19: …ST[‘username’])&̲& isset(_POST[‘password’])){
$username = $_POST[‘username’];
$password = KaTeX parse error: Expected 'EOF', got '}' at position 26: …sword']; }̲ 在上述代码中,第一行的…_POST数据中的数据取出来,保存到变量中。若客户端没有提交用户名和密码,则if条件不满足,不进行处理。
7.1.2URL参数交互
当表单以GET方式提交时,会将用户填写的内容放在URL参数中进行提交。以例7—1为例,将表单的method属性删除(或将其值改为get),然后提交表单,会得到如下URL。
http://localhost/login.php?username=test&password=123456
在上述URL中,“?”后面的内容为参数信息。参数是由参数名和参数值组成的,中间使用等号“=”进行连接。多个参数之间使用“&”分隔。其中,username和password是参数名,对应表单中的name属性;test和123456是参数值,对应用户填写的内容。
接下来在php中使用
G
E
T
数
组
接
收
U
R
L
参
数
,
并
进
行
输
出
,
示
例
代
码
如
下
。
i
f
(
i
s
s
e
t
(
_GET数组接收URL参数,并进行输出,示例代码如下。 if(isset(
GET数组接收URL参数,并进行输出,示例代码如下。if(isset(_GET[‘username’])&& isset($_GET[‘password’])){
echo $_GET[‘username’]; //输出结果:test
echo $_GET[‘password’]; //输出结果:123456
}
7.1.3 数组方式提交数据
在web表单中,复选框是一种支持提交多个值的表单控件,在编写表单时应将其 name 属性设置为数组,示例代码如下。
游泳
读书
跑步
7.1.4 HTML 特殊字符处理
再将用户输入的内容输出到 HTML 中显示时,会遇到特殊字符问题。例如,用户提交一段HTML代码时,为了将代码原样显示,需要将里面的特殊字符串转换为实体字符,防止被浏览器解析。若没有对这些特殊字符进行处理,会给网站的安全带来风险,下面通过例 7-4来演示这种情况 。
xss.php
<?php
if(isset($_POST[‘content’])) {
echo $_POST[‘content’];
exit;
}
?>
留言内容:
按照上述代码编写完成后,通过浏览器访问该文件,并在留言框中输入一下内容。