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 相关文章推荐
ip签名探针
Oct 09 PHP
如何对PHP程序中的常见漏洞进行攻击(下)
Oct 09 PHP
如何使用PHP中的字符串函数
Nov 24 PHP
一个PHP模板,主要想体现一下思路
Dec 25 PHP
PHP 变量定义和变量替换的方法
Jul 30 PHP
PHP转换IP地址到真实地址的方法详解
Jun 09 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
Jul 08 PHP
PHP贪婪算法解决0-1背包问题实例分析
Mar 23 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
Jun 05 PHP
Laravel 队列使用的实现
Jan 08 PHP
PHP+redis实现的购物车单例类示例
Feb 02 PHP
php接口隔离原则实例分析
Nov 11 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 pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
常用的javascript function代码
2008/05/23 Javascript
基于jquery的页面划词搜索JS
2010/09/14 Javascript
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
2011/06/02 Javascript
a标签的href与onclick事件的区别详解
2014/11/12 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
jQuery插件编写步骤详解
2016/06/03 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
2016/12/29 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
Angular.js前台传list数组由后台spring MVC接收数组示例代码
2017/07/31 Javascript
Angular(5.2-&gt;6.1)升级小结
2018/12/27 Javascript
解析Python中的变量、引用、拷贝和作用域的问题
2015/04/07 Python
详解Python自建logging模块
2018/01/29 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
2019/04/16 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
2019/07/11 Python
python写程序统计词频的方法
2019/07/29 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
tensorflow 保存模型和取出中间权重例子
2020/01/24 Python
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
CSS3实现酷炫的3D旋转透视效果
2019/11/21 HTML / CSS
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
美国男装连锁零售商:Men’s Wearhouse
2016/10/14 全球购物
入党积极分子介绍信
2014/01/17 职场文书
学生感冒英文请假条
2014/02/04 职场文书
工商企业管理专业自荐信范文
2014/04/12 职场文书
感恩老师的演讲稿
2014/05/06 职场文书
2014年度安全生产目标管理责任书
2014/07/25 职场文书
给妈妈洗脚活动方案
2014/08/16 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
优化Mysql查询的示例
2022/04/26 MySQL