PHP与Web页面交互操作实例分析


Posted in PHP onJune 02, 2020

本文实例讲述了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。
PHP与Web页面交互操作实例分析

  • "?"后面的内容为参数信息

  • 参数是由参数名和参数值组成的,中间使用等号“=”进行连接

  • 多个参数之间使用“&”分隔

  • 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特殊字符的函数
PHP与Web页面交互操作实例分析

  • nl2br(),echo nl2br(“123\n456”, false);

  • strip_tags()可以去除字符串中的标记部分,通常用于读取一段HTML代码后,去除其中的HTML标记,只保留文本。

    $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常量才会进行转换。

    $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解码后的结果,无需手动进行处理。

    $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参数字符串。

    $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程序设计有所帮助。

PHP 相关文章推荐
详细介绍:Apache+PHP+MySQL配置攻略
Sep 05 PHP
上传多个文件的PHP脚本
Nov 26 PHP
php下实现伪 url 的超简单方法[转]
Sep 24 PHP
php trim 去除空字符的定义与语法介绍
May 31 PHP
深入Nginx + PHP 缓存详解
Jul 11 PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 PHP
php导入excel文件到mysql数据库的方法
Jan 14 PHP
PHP curl模拟登录带验证码的网站
Nov 30 PHP
composer.lock文件的作用
Feb 03 PHP
php强制下载文件函数
Aug 24 PHP
php生成图片缩略图功能示例
Feb 22 PHP
PHP微信模板消息操作示例
Jun 29 PHP
PHP Web表单生成器案例分析
Jun 02 #PHP
一文看懂PHP进程管理器php-fpm
Jun 01 #PHP
PHP论坛实现积分系统的思路代码详解
Jun 01 #PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
May 29 #PHP
php使用自带dom扩展进行元素匹配的原理解析
May 29 #PHP
PHP实现本地图片转base64格式并上传
May 29 #PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
May 29 #PHP
You might like
PHP缓存技术的多种方法小结
2012/08/14 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
为数据添加append,remove功能
2006/10/03 Javascript
区分JS中的undefined,null,&quot;&quot;,0和false
2007/03/08 Javascript
删除select中所有option选项jquery代码
2013/08/12 Javascript
利用cookie记住背景颜色示例代码
2013/11/04 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
jQuery Validate 验证,校验规则写在控件中的具体实例
2014/02/27 Javascript
jQuery获取页面元素绝对与相对位置的方法
2015/06/10 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
2017/06/25 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
基于js文件加载优化(详解)
2018/01/03 Javascript
vue.js实现的幻灯片功能示例
2019/01/18 Javascript
JS/jQuery实现获取时间的方法及常用类完整示例
2019/03/07 jQuery
fastadmin中调用js的方法
2019/05/14 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
[56:01]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 Effect vs EG
2018/03/31 DOTA
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
Python中Threading用法详解
2017/12/27 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
Django如何自定义model创建数据库索引的顺序
2019/06/20 Python
Python Django view 两种return的实现方式
2020/03/16 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/04/11 面试题
转让协议书范本
2014/04/15 职场文书
学校募捐倡议书
2014/05/14 职场文书
学校法制宣传日活动总结
2014/11/01 职场文书
2019大学生预备党员转正思想汇报
2019/06/21 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书
MySQL基础(一)
2021/04/05 MySQL
详解Go语言运用广度优先搜索走迷宫
2021/06/23 Python
Python采集股票数据并制作可视化柱状图
2022/04/04 Python
Win11 Build 22000.829更新补丁KB5015882发布(附更新修复内容汇总)
2022/07/15 数码科技