php safe unserialize

时间:2012-12-20 21:42:44

标签: php

在php中使用unserialize时,最安全的方法是处理变量无法反序列化的潜在情况。

例如

(不是我会这样,只是为了举例):

$myVar = true;

$result = unserialize($myVar);

这将返回false,这很好。但它也引起了一个令人讨厌的通知。

我一直在做以下事情:

$result = @unserialize($myVar);
感觉很讨厌。那么当有可能出现错误

时,最好的方法是什么才能反序列化

1 个答案:

答案 0 :(得分:2)

您可以在try / catch中使用错误处理程序:

set_error_handler('exceptions_error_handler');
function exceptions_error_handler($severity, $message, $filename, $lineno) {
  if (error_reporting() == 0) {
    return;
  }
  if (error_reporting() & $severity) {
    throw new ErrorException($message, 0, $severity, $filename, $lineno);
  }
}
$string = 'bob';
try {
   $result = unserialize($string);
} catch (Exception $e) {
   echo 'Caught exception: ',  $e->getMessage(), "\n";
}
if(isset($result)) {
    //Continue code for valid serialized array here
}