Заменить eval()

splashcoder

Новичок
Есть класс для архивации файлов, в нём конструкция вида
PHP:
$dtime    = dechex($this->unix2DosTime($time));
        $hexdtime = '\x' . $dtime[6] . $dtime[7]
                  . '\x' . $dtime[4] . $dtime[5]
                  . '\x' . $dtime[2] . $dtime[3]
                  . '\x' . $dtime[0] . $dtime[1];
        eval('$hexdtime = "' . $hexdtime . '";');
Для чего здесь eval и как можно его заменить?
Без этой строки архив создаётся, но не открывается.
 

AnrDaemon

Продвинутый новичок
http://phpfaq.ru/debug
Смотри, что куда преобразуется, ищи, чем можно заменить. Скорее всего, всё это тривиально решается через pack()
 

MiksIr

miksir@home:~$
Не совсем тривиально, тут смешанный порядок, у меня получилось
PHP:
$dtime = $this->unix2DosTime($time);
$hexdtime = pack("nn", $dtime, $dtime >> 16);
 

fixxxer

К.О.
Партнер клуба
В данном случае от eval-а никакого вреда нет. Говнокод, конечно, но никаких проблем с безопасностью тут не будет.
 

AnrDaemon

Продвинутый новичок
Я вообще-то имел в виду, что его как раз частенько отключают ради "безопасности".
 

splashcoder

Новичок
В данном случае от eval-а никакого вреда нет. Говнокод, конечно, но никаких проблем с безопасностью тут не будет.
Мне как раз и нужно отключить eval на серваке, но из-за этой несчастной строчки это не представлялось возможным...
А с безопасностью от этого eval ооочень много проблем
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
То есть чел не знает нахрена ему eval в коде, но точно знает, что от него
А с безопасностью от этого eval ооочень много проблем
Ну молодец, чо
 

splashcoder

Новичок
То есть чел не знает нахрена ему eval в коде, но точно знает, что от него

Ну молодец, чо
Я знаю что в этом коде он мне нах не упёрся и нужно убрать, а если кому-то не известны траблы от его применения, то это их проблемы...
 
Сверху