2014-10-11 3 views
0

Я упаковываю свой код с помощью gzdeflate(), после того как я добавляю addlashes() и записываю его в файл как $ var = 'MY_RESULT'; После этого я пытаюсь выполнить его с помощью eval (stripslashes (gzinflate ($ var))) и получить ошибку. Предупреждение: gzinflate(): ошибка данных в этой строке. Если я задаю $ var = addslashes (gzdeflate ("my_original_code")), все работает хорошо, но мне нужно вывести дефлированный результат в эту переменную. Так где же моя ошибка? Вот мой код:PHP Предупреждение: gzinflate(): ошибка данных в

<?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); 
+0

Кроме отсутствующей запятой в конце строки 5 ('$ b =" ...; ";'), упрощенная версия этого кода без записи в файл работает нормально: http://3v4l.org/Uigv4 – IMSoP

+0

Да, но мне нужен рабочий код с записью в файл. – ShabbyTon

+1

Мое мнение состояло в том, что я не смог воспроизвести вашу проблему с упрощенным примером, и это может помочь сгладить проблему. Я пытаюсь помочь вам обнаружить проблему, а не писать код для вас. – IMSoP

ответ

1

Вам необходимо изменить порядок шагов кодирования при декодировании.

шагов кодирования:

  1. принимает код, применить сжатие GZIP, что дает сжатый код
  2. взять сжатый код, добавьте косую черту, давая сбежавший сжатый код

Ваших текущих этапов декодирования:

  1. удалите сжатый код и попытайтесь его распаковать
  2. принять результат (1) и попытаться удалить слэш

Очевидно, что не будет работать. Вам нужно:

  1. взять сбежавший сжатый код, удалите слэш, давая сжатый код
  2. взять сжатый код, распаковывает его, давая оригинальный код

Короче говоря, вместо stripslashes(gzinflate($var)) , вам нужно gzinflate(stripslashes($var)).

[Почему на земле вы делаете все это, и работаете eval() на результате, я боюсь думать, но есть ваша ошибка.]

+0

Не помогает, а также получить ошибку. Добавлен код для первого сообщения. – ShabbyTon