也就是说,测试我是否可以安全地gzinflate字符串。
如果我的压缩数据被篡改,我会收到“错误数据”警告。我不想压制警告,这意味着我要么必须陷阱,要么测试它可以被gzinflated。后者是我的首选解决方案,但我不知道如何。
适合下面的代码示例的东西将是完美的:
if(i_can_haz_inflate($data))
{
// go ahead
$source = gzinflate($data);
}
else
{
// bad data
}
编辑:指定了gz(de | in)flate后我才意识到我实际上并不太关心压缩算法。在解压缩尝试之前是否有更适合检查完整性的内容?
答案 0 :(得分:5)
gzinflate()
返回原始字符串,如果它不是gzdeflate()
编码的字符串。
最明显的检查是:
$deflated = @gzinflate($data); // to avoid getting a warning
if ($data != $deflated && $deflated !== FALSE) {
$source = gzinflate($data);
}
我认为没有其他方法可以做到这一点。
答案 1 :(得分:2)
答案 2 :(得分:0)
是否存在用于gzdeflated文件的已知魔术头,甚至有一些程序可以在不处理完整数据的情况下将其检出?