PHP与Web页面交互操作实例分析
作者:Cat family 发布时间:2023-09-05 14:43:16
本文实例讲述了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是参数值,对应用户填写的内容
if (isset($_GET['username']) && isset($_GET['password'])) { echo $_GET['username']; // 输出结果:test echo $_GET['password']; // 输出结果:123456}
3.数组方式提交数据
复选框是一种支持提交多个值的表单控件
在编写表单时应将其 name属性设置为数组
<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元素
<!-- 表单控件 -->// 接收代码<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标记,只保留文本。
$html = <<<'EOD'<ul><li>苹果</li><li>香蕉</li></ul>123<test>456</test><aaa>789EOD;echo strip_tags($html);//输出结果苹果香蕉123456789
转换和还原字符串中的HTML特殊字符,
htmlspecialchars()和htmlspecialchars_decode()函数分别用于转换和还原字符串中的HTML特殊字符,具体包括“&”、单引号、双引号、“<”、“>”,其中单引号需要将函数的第2个参数设置为ENT_QUOTES常量才会进行转换。$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'56123<br>4'56
urlencode()和urldecode()函数,urlencode()和urldecode()函数主要用于在HTML中输出URL参数时进行编码转换,前者用于编码,后者用于解码。
注意,当使用$_GET接收参数时,获得的数据已经是URL解码后的结果,无需手动进行处理。$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+CA&B C
http_build_query(),利用http_build_query()函数可以将PHP关联数组转换为URL参数字符串。
$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


猜你喜欢
- 游标概念数据库操作中我们常常会遇到这样情况,即从某一结果集中逐一地读取一条记录。那么如何解决这种问题呢?游标为我们提供了一种极为优秀的解决方
- python去除字符串最后的换行符‘\n’s = s.replace('\n',
- 问题定义一个int型的一维数组,包含10个元素,分别赋值为1~10, 然后将数组中的元素都向前移一个位置,即,a[0]=a[1],a[1]=
- Tensorboard详解该类在存放在keras.callbacks模块中。拥有许多参数,主要的参数如下:1、log_dir: 用来保存Te
- 基本介绍图像的全景拼接,即“缝合”两张具有重叠区域的图来创建一张全景图。其中用到了计算机视觉和图像处理技术有:关键点检测、局部不变特征、关键
- 平常的开发过程中不免遇到需要把model转成字典的需求,尤其是现在流行前后端分离架构,Json格式几乎成了前后端之间数据交换的标准,这种mo
- 今天给大家推荐一款很好用的Python编辑器,全世界90%Python开发者都会用的开发工具------Pycharm,完全免费哦1. 百度
- 前言学习Python的初衷是因为它的实践的便捷性,几乎计算机上能完成的各种操作都能在Python上找到解决途径。平时工作需要在线学习。而在线
- 发现一个非常强的CSS在线排版:CSS Text Wrapper只要你拖拽线条,你就可以得到你想要的文字版式CSS代码。可以让想让文本块呈现
- 经常用FLASH嵌入到网页里面,那咋能躲过W3C那个家伙呢?看下面!<object type="applicati
- SQLyog是一款MySQL可视化工具,他可以将部分SQL操作通过图形化界面操作来完成,方便开发者更好的进行开发及数据库设计。在安装SQLy
- 如何让页面超时并指定一个超时时间?下面就是利用缓冲的程序页面事例: <%@ OutputCache Du
- Redis持久化机制实现原理是什么?流程是什么?持久化就是把内存中的数据存放到磁盘中,防止宕机后内存数据丢失。按照指定的时间间隔内将内存的数
- 前言Vue2.x 使用 EventBus 事件总线进行兄弟组件通信,而在Vue3中事件总线模式已经被移除,官方建议使用外
- 下面列出Python正则表达式的几种匹配用法:1.测试正则表达式是否匹配字符串的全部或部分regex=ur"" #正则表
- PHP mysqli_thread_id() 函数返回当前连接的线程 ID,然后杀死连接:<?php// 假定数据库用户名:root,
- <html><head><title>过滤空格</title><SCRIPT LANG
- 移动端适配满足多个查询时的优先级: 请注意,可以同时满足多个查询,并且它们都将由mergeOption合并,mergeOption稍后由me
- 最近一直在整理统计图表的绘制方法,发现Python中除了经典Seaborn库外,还有一些优秀的可交互的第三方库也能实现一些常见的统计图表绘制
- 过年这段时间由于线上数据库经常压力过大导致响应非常缓慢甚至死机,咬咬牙下大决心来解决效率不高的问题!首先是由于公司秉承快速开发原则,频繁上线