PHP7修改的函数


Posted in PHP onMarch 09, 2021
  • parse_ini_file()和parse_ini_string()的scanner_mode参数增加了INI_SCANNER_TYPED选项。
  • unserialize()增加了第二个参数,可以用来指定接受的类列表。RFC: https://wiki.php.net/rfc/secure_unserialize
  • proc_open()打开的最大限制之前是写死的16,现在这个限制被移除了,最大数量取决于PHP可用的内存。windows版本增加了选项"blocking_pipes",可用来指定是否强制以块的方式读取。
  • array_column():The function now supports an array of objects as well as two-dimensional arrays
  • stream_context_create()windows下面可以接收array("pipe" => array("blocking" => <boolean>))参数。
  • dirname()增加了可选项$levels,可以用来指定目录的层级。dirname(dirname($foo)) => dirname($foo, 2);
  • debug_zval_dump()打印的时候,使用int代替long,使用float代替double。

PHP 过滤 unserialize()

PHP 7 增加了可以为 unserialize() 提供过滤的特性,可以防止非法数据进行代码注入,提供了更安全的反序列化数据。

实例

<?php
class MyClass1 { 
   public $obj1prop;   
}
class MyClass2 {
   public $obj2prop;
}
$obj1 = new MyClass1();
$obj1->obj1prop = 1;
$obj2 = new MyClass2();
$obj2->obj2prop = 2;
$serializedObj1 = serialize($obj1);
$serializedObj2 = serialize($obj2);
// 默认行为是接收所有类
// 第二个参数可以忽略
// 如果 allowed_classes 设置为 false, unserialize 会将所有对象转换为 __PHP_Incomplete_Class 对象
$data = unserialize($serializedObj1 , ["allowed_classes" => true]);
// 转换所有对象到 __PHP_Incomplete_Class 对象,除了 MyClass1 和 MyClass2
$data2 = unserialize($serializedObj2 , ["allowed_classes" => ["MyClass1", "MyClass2"]]);
print($data->obj1prop);
print(PHP_EOL);
print($data2->obj2prop);
?>

#以上程序执行输出结果为:

#1
#2

 

PHP 相关文章推荐
用PHP实现ODBC数据分页显示一例
Oct 09 PHP
网友原创的PHP模板类代码
Sep 07 PHP
在PHP中使用curl_init函数的说明
Nov 02 PHP
PHP通过正则表达式下载图片到本地的实现代码
Sep 19 PHP
强烈声明: 不要使用(include/require)_once
Jun 06 PHP
更改localhost为其他名字的方法
Feb 10 PHP
Laravel框架数据库CURD操作、连贯操作总结
Sep 03 PHP
php中cookie实现二级域名可访问操作的方法
Nov 11 PHP
php中Ctype函数用法详解
Dec 09 PHP
解决php表单重复提交实现方法
Sep 29 PHP
PHP getallheaders无法获取自定义头(headers)的问题
Mar 23 PHP
PHP封装的简单连接MongoDB类示例
Feb 13 PHP
PHP7 弃用功能
Mar 09 #PHP
PHP7 新增功能
Mar 09 #PHP
PHP7 其他修改
Mar 09 #PHP
PHP7 标准库修改
Mar 09 #PHP
PHP7 其他语言层面的修改
Mar 09 #PHP
PHP7 错误处理机制修改
Mar 09 #PHP
PHP7 字符串处理机制修改
Mar 09 #PHP
You might like
PHP4实际应用经验篇(4)
2006/10/09 PHP
mysql中存储过程、函数的一些问题
2007/02/14 PHP
PHP读取XML值的代码(推荐)
2011/01/01 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
PHP序列化/对象注入漏洞分析
2016/04/18 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
2017/10/06 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
php从数据库读取数据,并以json格式返回数据的方法
2018/08/21 PHP
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
Javascript小技能总结(推荐)
2016/06/02 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
jquery+ajax实现省市区三级联动效果简单示例
2017/01/04 Javascript
vue深入解析之render function code详解
2017/07/18 Javascript
vue-cli常用设置总结
2018/02/24 Javascript
简化vuex的状态管理方案的方法
2018/06/02 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
Node.js API详解之 vm模块用法实例分析
2020/05/27 Javascript
python多线程编程方式分析示例详解
2013/12/06 Python
浅谈Python黑帽子取代netcat
2018/02/10 Python
python实现学员管理系统
2019/02/26 Python
PIL图像处理模块paste方法简单使用详解
2019/07/17 Python
python写程序统计词频的方法
2019/07/29 Python
matplotlib实现显示伪彩色图像及色度条
2019/12/07 Python
Python configparser模块操作代码实例
2020/06/08 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
2021/01/24 Python
Contém1g官网:巴西彩妆品牌
2020/01/17 全球购物
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
产品包装策划方案
2014/05/18 职场文书
银行求职信范文
2014/05/26 职场文书
公司辞职信模板
2015/05/13 职场文书
企业内部管理控制:银行存款控制制度范本
2020/01/10 职场文书
MySQL高级进阶sql语句总结大全
2022/03/16 MySQL