当前位置: 首页 > news >正文

丽水集团网站建设广告设计制作教程

丽水集团网站建设,广告设计制作教程,什么公司网站建设比较好,重庆seo技术文章目录 参考环境序列化文本Scalar Type整数浮点数布尔值字符串 Compound Type数组数据结构序列化文本 对象数据结构序列化文本 Special TypeNULL数据结构序列化文本 手写序列化文本过程中的注意事项个数描述须于现实相符序列化文本前缀的大小写变化符号公共属性 参考 项目描… 文章目录 参考环境序列化文本Scalar Type整数浮点数布尔值字符串 Compound Type数组数据结构序列化文本 对象数据结构序列化文本 Special TypeNULL数据结构序列化文本 手写序列化文本过程中的注意事项个数描述须于现实相符序列化文本前缀的大小写变化符号公共属性 参考 项目描述搜索引擎Bing、GoogleAI 大模型文心一言、通义千问、讯飞星火认知大模型、ChatGPTPHP 手册PHP Manual 环境 项目描述PHP8.0.0 序列化文本 在 PHP 反序列化漏洞中我们都需要使用到 序列化文本。常常采用的方法是通过 PHP 代码创建目标数据后再使用 serialize() 函数将其转化为序列化文本。对此请参考如下示例 ?php# 定义目标数据 class MyClass {public $name RedHeart;public $nation China; }$myClass new MyClass();# 通过 serialize 函数获得序列化文本 var_dump(serialize($myClass));执行效果 string(69) O:7:MyClass:2:{s:4:name;s:8:RedHeart;s:6:nation;s:5:China;}此办法虽然可行但我们仍需要 对 PHP 中各种数据类型的序列化文本的结构有一定认识。在某些特殊场景下手写序列化文本 才是最好的选择‍♂️。 Scalar Type 在 PHP 中标量数据类型 Scalar Type 是多种基础类型的统称。标量数据类型具体而言包含 整型 int、浮点型 float、布尔型 boolean、字符串 string 四种类型。 整数 在 PHP 中整数数据类型用于表示 整型数值可以是 正数、负数 或 零。整数的序列化文本由 i: 和具体的数值组成且序列化文本以 ; 结尾。对此请参考如下示例 ?phpvar_dump(serialize(1)); var_dump(serialize(999)); var_dump(serialize(-0)); var_dump(serialize(-93));执行效果 string(4) i:1; string(6) i:999; string(4) i:0; string(6) i:-93;浮点数 数学中数值包含整数及小数。而在 PHP 中小数被称为浮点数。浮点数的序列化文本由 d: 和具体的浮点数值组成且序列化文本以 ; 结尾。对此请参考如下示例 ?phpvar_dump(serialize(1.000)); var_dump(serialize(999.36)); var_dump(serialize(-0.374)); # 数值中的 e 或 E 表示科学计数法 # 就 339E-10 而言表示 339 * 10 ** -10 var_dump(serialize(339E-10));执行效果 string(4) d:1; string(9) d:999.36; string(9) d:-0.374; string(10) d:3.39E-8;为什么使用 d: 而不是 f: 呢d 即双精度浮点数全称为 double。在PHP的内部实现中浮点数使用 双精度浮点数double-precision floating-point numbers 来表示。双精度浮点数相比于单精度浮点数通常表示为 float具体存在如下区别 单精度浮点数 使用 32 位存储通常以 IEEE 754 单精度标准表示。单精度浮点数提供约 7 位有效数字的精度适用于大多数应用场景但对于某些需要更高精度的计算来说可能不够。 双精度浮点数 使用 64 位存储通常以 IEEE 754 双精度标准表示。双精度浮点数提供约 15 ~ 16 位有效数字的精度因此比单精度浮点数具有更高的精度适用于需要更精确计算的应用。 布尔值 布尔值常用于 逻辑运算用于表示某一 个条件语句的对错。布尔值由 真 和 假 组成分别与序列化文本 b:1; 及 b:0; 相对应。 字符串 在 PHP 中字符串用于表示 文本数据。字符串的序列化文本由 s、字符串所占用的字节数 以及 具体的字符串值 三部分组成每两部分内容 使用 : 进行分隔且序列化文本以分号 ; 进行结尾。对此请参考如下示例 ?phpvar_dump(serialize(Hello World)); var_dump(serialize(3.1415926)); var_dump(serialize(.?)); var_dump(serialize(你好中国));执行效果 string(19) s:11:Hello World; string(16) s:9:3.1415926; string(23) s:15:.?; string(23) s:15:你好中国;Compound Type Compound Type 类型指的是 由其他数据类型组合而成的复合数据类型。在 PHP 中主要有两种复合数据类型即 数组 Array 和 对象 Object。复合类型 可以包含多个值或属性并且允许以不同的方式组合不同类型的数据。 数组 数据结构 数组是一个包含 键值对 的数据结构其中键通常是 整数或字符串而值可以是 任意数据类型标量数据类型、复合数据类型或 NULL。数组用于存储和操作多个相关的值。对此请参考如下示例 ?php$arr [1, 2, 3, 4]; $arr1 [arr $arr, arr1 Nested Array, 3 I am three ];var_dump($arr1); var_dump($arr1[arr1]); var_dump($arr[2]); var_dump($arr1[3]);执行效果 array(3) {[arr]array(4) {[0]int(1)[1]int(2)[2]int(3)[3]int(4)}[arr1]string(12) Nested Array[3]string(10) I am three } string(12) Nested Array int(3) string(10) I am three序列化文本 数组的序列化文本的大致格式如下 a:数组中的元素个数:{键的序列化文本分号结尾值的序列化文本分号结尾}举个栗子 ?php$arr [1, 2, 3, 4]; $arr1 [arr $arr,arr1 Nested Array,3 I am three ]; $arr2 [];var_dump(serialize($arr)); var_dump(serialize($arr1)); var_dump(serialize($arr2));执行效果 string(38) a:4:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;} string(107) a:3:{s:3:arr;a:4:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;}s:4:arr1;s:12:Nested Array;i:3;s:10:I am three;} string(6) a:0:{}对象 数据结构 对象是基于 类 Class 定义的数据类型每个对象都是该类的实例并且可以包含属性和方法。对象用于表示具有 一组属性和相关行为 的实体。对此请参考如下示例 ?phpclass MyClass {public $name RedHeart;public $nation China;function sayHello() {print(Hello China . \n);} }# 实例化对象 $myClass new MyClass();# 访问对象的属性 var_dump($myClass - name); var_dump($myClass - nation); # 访问对象的方法 $myClass - sayHello();执行效果 string(8) RedHeart string(5) China Hello China序列化文本 对象的序列化文本的大致结构为 O:对象名称所包含的字符数:对象的名称:对象的属性个数:{属性的序列化文本分号结尾属性值的序列化文本分号结尾}举个栗子 ?phpclass MyClass {public $name RedHeart;public $nation China;function sayHello() {print(Hello China . \n);} }$myClass new MyClass();var_dump(serialize($myClass));执行效果 string(69) O:7:MyClass:2:{s:4:name;s:8:RedHeart;s:6:nation;s:5:China;}Special Type 在 PHP 中Special Type 类型用于描述一些具有 特殊用途或特殊性质的数据类型或值。这类特殊类型 不属于标量类型或复合类型在编程中 具有独特的用途和特性。 NULL 数据结构 在 PHP 中NULL 是一个特殊的值常用于处理缺失的数据或未初始化的变量。 注 在 PHP 中NULL 同 TRUE 与 FALSE 一般都是 不区分大小写的。对此请参考如下示例 ?phpvar_dump(NULL); var_dump(NuLL); var_dump(null);var_dump(TRue); var_dump(falSe);执行效果 NULL NULL NULL bool(true) bool(false)序列化文本 对于 不同形态大小写之分 的 NULL其序列化文本均为 N;对此请参考如下示例 ?phpvar_dump(serialize(NULL)); var_dump(serialize(NuLL)); var_dump(serialize(null));执行效果 string(2) N; string(2) N; string(2) N;手写序列化文本过程中的注意事项 个数描述须于现实相符 在部分 PHP 序列化文本中存在 描述元素个数的数值这些数值 需要与实际的元素个数相符合。否则PHP 将为此抛出异常。对此请参考如下示例 ?php# 错误的序列化文本 $serialize_text a:2:{s:4:name;s:8:RedHeart;}; var_dump(unserialize($serialize_text));# 正确的序列化文本 $serialize_text a:1:{s:4:name;s:8:RedHeart;}; var_dump(unserialize($serialize_text));执行效果 PHP Notice: unserialize(): Unexpected end of serialized data in C:\test.php on line 6 PHP Notice: unserialize(): Error at offset 31 of 32 bytes in C:\test.php on line 6Notice: unserialize(): Unexpected end of serialized data in C:\test.php on line 6Notice: unserialize(): Error at offset 31 of 32 bytes in C:\test.php on line 6 bool(false) array(1) {[name]string(8) RedHeart }序列化文本前缀的大小写变化 对于不同的数据类型PHP 在将其转化为序列化文本后都将为其添加 独特的前缀。前缀中的 字母的大小写需要进行严格控制。否则PHP 将为此抛出异常。 具体而言除字符串前缀 s: 中的字母 对大小写不敏感外其他数据类型的前缀中的字母都 仅存在一种大小写形式大写或小写。对此请参考如下示例 ?phpvar_dump(unserialize(s:11:Hello World;)); var_dump(unserialize(S:11:Hello World;));var_dump(unserialize(i:1;)); var_dump(unserialize(I:1;));var_dump(unserialize(a:1:{S:4:name;S:8:RedHeart;})); var_dump(unserialize(A:1:{s:4:name;s:8:RedHeart;}));执行效果 PHP Notice: unserialize(): Error at offset 0 of 4 bytes in C:\test.php on line 8 PHP Notice: unserialize(): Error at offset 0 of 32 bytes in C:\test.php on line 11 string(11) Hello World string(11) Hello World int(1)Notice: unserialize(): Error at offset 0 of 4 bytes in C:\test.php on line 8 bool(false) array(1) {[name]string(8) RedHeart }Notice: unserialize(): Error at offset 0 of 32 bytes in C:\test.php on line 11 bool(false)符号 在 PHP 中的序列化文本中所有符号都必须使用英式符号而不能使用 中式符号。否则PHP 将为此抛出异常。 在序列化文本中如果需要使用到引号则 引号必须使用双引号 而不是单引号。否则PHP 将为此抛出异常。 公共属性 在 PHP 中仅推荐在 PHP 对象中 仅包含公共属性 时手写相关的序列化文本 不推荐不意味着不可行因篇幅原因不在本篇博客中进行说明。这是因为在 PHP 中当对象被序列化时对象的非公共属性的名称会被特殊处理以表示其可见性。对此请参考如下示例 ?phpclass MyClass {# 私有属性private $name RedHeart;# 受保护属性protected $nation China; }var_dump(serialize(new MyClass()));执行效果 string(82) O:7:MyClass:2:{s:13: MyClass name;s:8:RedHeart;s:9: * nation;s:5:China;}MyClass 类中的私有属性名称 name 在转化为序列化文本后成了 s:13: MyClass name;相比原先的 name 增加了两个空格实际上是 控制字符 NUL无法通过空格进行代替及所属类的名称 MyClass。 这样的处理方式是为了 在反序列化对象时能够正确地还原属性的可见性。当 PHP 在反序列化时遇到这些特殊的前缀PHP 会 知道如何正确地设置属性的可见性。公共属性不会有这种特殊处理它们在序列化后的文本中保持原始的属性名。
http://www.sadfv.cn/news/185734/

相关文章:

  • 兼职网站编辑怎么做seo指哪些市场区域
  • 网站流程示意百度网站建设中的自由容器
  • 怎么才能建立一个网站卖东西查询网站建设
  • 公众号版影视网站开发中小企业网站建设公司首选
  • 宿迁做网站的网站qq访客获取
  • 太原市做网站好的科技公司域名注册证书
  • 家教网站模板下载四川建设厅证件查询
  • 珠海企业网站建设公司电子商务网站建设的规章制度
  • 网站logo怎么设计为中小型企业构建网站
  • 长沙网页网站制作塑胶模具东莞网站建设
  • wordpress建站是什么电商网站建设过程
  • 做网站和做商城的区别在哪里网页设计过程报告
  • 如何制作网站连接数据库如何把字体导入wordpress
  • 仿163源码交易平台宽屏整站源码 网站模板交易平台源码技术支持 东莞网站建设石材
  • 单页网站制作建站仿站wordpress 中国 论坛
  • 如何让网站关键词搜录wordpress 检索
  • 做网站的具体步骤昆明做网站要多少钱
  • 能打开网站的浏览器莱芜网站推广
  • 教你如何建立网站营销型的物流网站模板
  • dedecms的网站如何添加个引导页微信群公告如何做网站链接
  • 全国建设工程招标信息网站浦东新区手机网站设计
  • sedo这种多语言网站怎么建设小程序制作侧拉切换
  • 制作公司网站 优帮云如何建设网站并与数据库相连
  • 成都网站建设益友网络个人微信crm系统
  • 电商网站建设与维护试题宁波海曙网站开发公司电话
  • 宁夏银川做网站的公司扬州网站推广
  • 有没有好网站推荐wordpress后台怎么登入
  • 站长如何做导航网站可以免费发布招聘网站
  • 网站建设搞笑广告词手机网站报价表
  • 营销型网站开发流程包括logo设计网站排行榜