php unserialize()不能反序列化时怎么做才能不提示错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php unserialize()不能反序列化时怎么做才能不提示错误相关的知识,希望对你有一定的参考价值。

$arr = 'asdasdasd';//随便一不是从数组序列化后的字符串
if(false !== unserialize($arr))
echo '可以反序列化';

else
echo '不能';


但这样还是有错误信息提出
Notice: unserialize() [function.unserialize]: Error at offset......

加@ 可以禁止提示错误 ,但程序会正常运行

如下

if(false !== @unserialize($arr))追问

那样会不会有潜在的危险呢?

追答

不会的啊,

Notice 错误都可以 忽略掉的。 这只不过是一种提示而已 不会影响程序。

你也可以在 公共导入文件最上面里 加上一句
error_reporting(E_ALL ^ E_NOTICE);

这个就是 屏蔽notice错误 而其他错误是 全开 的意思。

大型开源项目里 一般 常见的 代码。

参考技术A @可以去除警告,当然啦这是代码的不严谨

以上是关于php unserialize()不能反序列化时怎么做才能不提示错误的主要内容,如果未能解决你的问题,请参考以下文章

利用phar协议造成php反序列化

XCTF unserialize3

PHP反序列漏洞学习

XCTF-攻防世界CTF平台-Web类——13Web_php_unserialize(php反序列化漏洞绕过__wakeup()函数正则表达式)

PHP反序列化漏洞学习

serialize和unserialize函数