本文实例讲述了php与web页面交互操作。分享给大家供大家参考,具体如下:
web交互
1.web表单交互
- 当表单的method属性提交方式为post时,浏览器发送post请求
-
当表单的method属性提交方式为get时,浏览器发送get请求
当php收到来自浏览器提交的数据后,会自动保存到超全局变量中。
超全局变量是php预定义好的变量,可以再php脚本的任何位置使用
- 常见的超全局变量数组变量有$ _post、$_get等
- 通过post方式提交的数据会保存到$_post中
- 通过get方式提交的数据会保存到$_get中
2.url参数交互
当表单以get方式提交时,会将用户填写的内容放在url参数中进行提交。
表单的method属性删除(或将其值改为get),然后提交表单,会得到如下url。
-
"?"后面的内容为参数信息
-
参数是由参数名和参数值组成的,中间使用等号“=”进行连接
-
多个参数之间使用“&”分隔
-
username和password是参数名,对应表单中的name属性
-
test和123456是参数值,对应用户填写的内容
1234if
(isset(
$_get
[
'username'
]) && isset(
$_get
[
'password'
])) {
echo
$_get
[
'username'
];
// 输出结果: test
echo
$_get
[
'password'
];
// 输出结果:123456
}
3.数组方式提交数据
-
复选框是一种支持提交多个值的表单控件
-
在编写表单时应将其 name属性设置为数组
1234<input type=
"checkbox"
name=
"hobby[]"
value=
"swimming"
> 游泳
<input type=
"checkbox"
name=
"hobby[]"
value=
"reading"
> 读书
<input type=
"checkbox"
name=
"hobby[]"
value=
"running"
> 跑步
print_r(
$_post
[
'hobby'
]);
-
$_post中的hobby元素是一个索引数组,数组中的元素是用户所选复选框对应的value属性值
-
当用户未选中任何复选框时,$_post数组中将不存在hobby元素
1234567891011<!-- 表单控件 -->
// 接收代码
<input type=
"text"
name=
"user[name]"
>
$_post
[
'user'
][
'name'
];
<input type=
"text"
name=
"user[a][1]"
>
$_post
[
'user'
][
'a'
][1];
<input type=
"text"
name=
"user[1][b]"
>
$_post
[
'user'
][1][
'b'
];
<input type=
"text"
name=
"user[c][]"
>
$_post
[
'user'
][
'c'
][0];
<input type=
"text"
name=
"user[][d]"
>
$_post
[
'user'
][2][
'd'
];
<input type=
"text"
name=
"user[][]"
>
$_post
[
'user'
][3][0];
<input type=
"text"
name=
"user[3][][]"
>
$_post
[
'user'
][3][1][0];
<input type=
"text"
name=
"user[3][][]"
>
$_post
[
'user'
][3][2][0];
<input type=
"text"
name=
"user[][][2]"
>
$_post
[
'user'
][4][0][2];
<input type=
"text"
name=
"user[4][0][]"
>
$_post
[
'user'
][4][0][3];
-
当需要处理的表单内容非常多的情况下,表单中name属性的命名可以采用多维数组的形式,便于开发,其使用方式与php中的数组非常相似
-
例如,开发在线考试系统时,表单中有填空题、单选题、多选题、判断题等多种题型,这时可以将每种题型放到一个数组里面进行提交,php收到后分别遍历每种题型的数组即可。
4.html特殊字符处理
在将用户输入的内容输出到html中显示时,会遇到特殊字符问题。
例如,用户提交一段html代码时,为了将代码原样显示,需要将里面的特殊字符串转换为实体字符,防止被浏览器解析
若没有对这些特殊字符进行处理,会给网站的安全带来风险。
为了解决这类问题,php提供了许多专门处理html特殊字符的函数
-
nl2br(),echo nl2br(“123\n456”, false);
-
strip_tags()可以去除字符串中的标记部分,通常用于读取一段html代码后,去除其中的html标记,只保留文本。
12345678$html
= <<<
'eod'
<ul><li>苹果</li><li>香蕉</li></ul>
123<test>456</test><aaa>789
eod;
echo
strip_tags
(
$html
);
//输出结果
苹果香蕉
123456789
-
转换和还原字符串中的html特殊字符,
htmlspecialchars()和htmlspecialchars_decode()函数分别用于转换和还原字符串中的html特殊字符,具体包括“&”、单引号、双引号、“<”、“>”,其中单引号需要将函数的第2个参数设置为ent_quotes常量才会进行转换。12345678$html
=
"123<br>4'56"
;
$html
= htmlspecialchars(
$html
, ent_quotes | ent_html5);
echo
$html
,
"\n"
;
$str
= htmlspecialchars_decode(
$html
, ent_quotes | ent_html5);
echo
$html
;
//输出结果
123<br>4'56
123<br>4'56
-
urlencode()和urldecode()函数,urlencode()和urldecode()函数主要用于在html中输出url参数时进行编码转换,前者用于编码,后者用于解码。
注意,当使用$_get接收参数时,获得的数据已经是url解码后的结果,无需手动进行处理。1234567$name
=
'a&b c'
;
$name
= urlencode(
$name
);
// url 编码
echo
"http://localhost/test.php?name=$name"
,
"\n"
;
echo
urldecode(
$name
);
// url解码
//输出结果
http:
//localhost/test.php?name=a%26b+c
a&b c
-
http_build_query(),利用http_build_query()函数可以将php关联数组转换为url参数字符串。
12345678$params
= [
'name'
=>
'test'
,
'hobby'
=> [
'reading'
,
'running'
]
];
$query
= http_build_query(
$params
);
echo
"http://localhost/test.php?$query"
;
//输出结果
http:
//localhost/test.php?name=test&hobby%5b0%5d=reading&hobby%5b1%5d=running
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/qq_41254184/article/details/89035002