PHP警告:gzinflate():数据错误

时间:2014-10-11 16:00:49

标签: php gz

我使用gzdeflate()打包我的代码后,我执行addslashes()并将其写入文件,如$ var ='MY_RESULT'; 之后我尝试使用eval(stripslashes(gzinflate($ var)))执行它并获取错误警告:gzinflate():此行中的数据错误。如果我设置$ var = addslashes(gzdeflate(“my_original_code”)),一切都很好,但我需要将泄露的结果放在这个变量中。那我的错误在哪里?这是我的代码:

<?php
$source = file_get_contents("source.txt");
$gz = addslashes(gzdeflate($source,9));
$a = "<?php \$var='";
$b = "'; eval(gzinflate(stripslashes(\$var)));";
$result = $a.$gz.$b;

$fp = fopen('result.php', 'wb');
fwrite($fp, $result);
fclose($fp);

1 个答案:

答案 0 :(得分:2)

您需要在解码时反转编码步骤的顺序。

编码步骤:

  1. 获取代码,应用gzip压缩,提供压缩代码
  2. 获取压缩代码,添加斜杠,提供转义压缩代码
  3. 您当前的解码步骤:

    1. 获取转义的压缩代码,并尝试解压缩
    2. 获取(1)的结果并尝试删除斜杠
    3. 显然,这不会奏效。你需要:

      1. 获取转义的压缩代码,删除斜杠,提供压缩代码
      2. 获取压缩代码,解压缩,给出原始代码
      3. 简而言之,您需要stripslashes(gzinflate($var))而不是gzinflate(stripslashes($var))

        [为什么你要做这一切,并在结果上运行eval(),我害怕思考,但是你的错误。]