欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

yii2 和 php (反)序列化踩坑

程序员文章站 2022-04-07 22:55:12
...
yii2 记录角色的注意事项

今天写 yii2 的 RBAC 应用,打算简单修改原有关于角色的记录,就能切换到新的权限,然后出现了这么个错误:

  • unserialize(): Error at offset 36 of 127 bytes

排除了权限结构(权限名称、角色名称、使用的 authManager 类型)问题之后,我想是记录角色的数据改得出问题了。原来记录的权限数据如下:


  • O:30:”console\rbac\ProfileAccessRule”:3:{s:4:”name”;s:14:”viewOwnProfile”;s:9:”createdAt”;i:1460293714;s:9:”updatedAt”;i:1460293714;}

既然是 php 的序列化数组,那么原始的数组中,不论下标或值,序列化后均以值(字符串)的形式出现,它们的下标都是自己的长度(所以也解释了O:30 指的是 console\rbac\ProfileAccessRule 这几个词共有30个字母,而以数字表示的不需标出其长度,如 i:1460293714;)。解决方法就很简单了,主要是序列化格式的问题。修改后的权限记录如下:


  • O:28:”console\rbac\AdminAccessRule”:3:{s:4:”name”;s:10:”visitAdmin”;s:9:”createdAt”;i:1460293714;s:9:”updatedAt”;i:1460293714;}

写代码这事,也就是搞清楚到底里面是个啥,再从工作步骤上一个个推敲出来囖~希望这些细碎的问题不会困扰到我们,毕竟琢磨这么久,要是不出错,指不定已经写出更加创新的代码来了。

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了yii2 和 php (反)序列化踩坑,包括了yii,php方面的内容,希望对PHP教程有兴趣的朋友有所帮助。