在实验php反序列化的时候碰到了一点小问题,记录一下。
下面这是源码,会产生一些问题,已经标识出来了
<?php
class A{
public $name = 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb';
public $pass = '123456';
}
$AA = new A();
$res = serialize($AA);
echo $res;
echo unserialize($res); //不能直接用echo
运行,会报错
Catchable fatal error: Object of class A could not be converted to string in E:\Desktop\info.php on line 13
意思大概是不能转为字符串输出,
print_r(),var_dump()函数进行查看,或者用->进行指向输出
<?php
class A{
public $name = 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb';
public $pass = '123456';
}
$AA = new A();
$res = serialize($AA);
echo $res;
$BB=unserialize($res);
print_r($BB);
var_dump($BB);
echo $BB->pass;
输出结果
---------- php5.69 ----------
O:1:"A":2:{s:4:"name";s:54:"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";s:4:"pass";s:6:"123456";}A Object
(
[name] => bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
[pass] => 123456
)
object(A)#2 (2) {
["name"]=>
string(54) "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
["pass"]=>
string(6) "123456"
}
123456
输出完成 (耗时 0 秒) - 正常终止