php反序列化报错之Catchable fatal error: Object of class A could not be converted to string

包永新
2023-12-01

在实验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 秒) - 正常终止

 

 类似资料: