Master-X
Форум | Новости | Статьи
Главная » Форум » CJs » 
Тема: Как отключить исполнение php кода в DTR ??
цитата
03/06/11 в 23:01
 Dark404
мне нужно, чтобы при заходе юзера ко мне на сайт, в хвост ссылки на каждой тумбе дописывался параметр ?id=domain.com, значение которого - домен сайта реферера.

реализовал я это, дописав в сабмемплейт к ссылке аута такую php строку:
Код:
out.php?link=face%url=#URL#?id=<?echo substr(substr($_SERVER['HTTP_REFERER'],strpos($_SERVER['HTTP_REFERER'],'//')+2),0,strpos(substr($_SERVER['HTTP_REFERER'],strpos($_SERVER['HTTP_REFERER'],'//')+2),'/'));?>

сдесь никаких ошибок нету. в стримротаторе, например, работает как надо - реферер определяется правильно и дописывается в хвост.

проблема возникла совершенно в неожиданном месте. дело в том, что DTR при сохранении темплейта (ну и при реранке естественно) рендерит php код, и в файле результата (/dtr/results/main.inc) вместо необходимого мне php кода (просто в виде текста, который я написал чуть выше) выдаётся уже готовый результат работы php. т.е. при работе сайта, вместо реферера посетителя, в параметре id тупо торчит имя домена моего сайта. т.к. реферером дтр считает тот сайт, на котором он стоит (подсказывает мне капитан очевидность)

пробовал решить следующими способами:
1. создал в папке результата файл .htaccess со строчкой php_flag engine off - не помогло.
2. пытался создать строковую переменную, которой присвоить значение кода, (который я вначале написал), а потом эту переменную вставить в нужное место в сабтемплейте. но этот вариант не работает, потому что в коде (тот что я вверху написал) куча специальных символов, на которые ругается компилятор. и что меня окончательно взбесило это то, что если ставить косой слеш перед специальными символами (типа \$ итд), то DTR сука их тоже отрендерит и вместо \$ получится $ и как следствие - вылезет ошибка. из-за этого невозможно в редакторе темплейтов DTR присвоить строковой переменной такой код (то что я вверху написал) !! icon_evil.gif
3. гуглил-гуглил - ничо не нагуглил
4. еще несколько всяких шизанутых способов пробовал - но они тоже не работают.

интересно, что в файле сабтемплейта в папке /dtr/templates php код не отрендереный. просто как текст. вот точно такое же мне нужно только в файле результата. у кого есть мысли на эту тему ?
цитата
04/06/11 в 11:32
 elektronik
Если DTR транслирует код всего один раз, можно попробовать сделать пхп код, который печатает нужный пхп код, например, так
Код:
out.php?link=face%url=#URL#?id=<? echo '<? echo substr(substr($_SERVER["HTTP_REFERER"],strpos($_SERVER["HTTP_REFERER"],"//")+2),0,strpos(substr($_SERVER["HTTP_REFERER"],strpos($_SERVER["HTTP_REFERER"],"//")+2),"/"));?>'?>
цитата
04/06/11 в 14:47
 vlad3d
ммм а не проще стукнуться к джою с таким вопросом?
он в аське бывает, не часто но бывает.
цитата
04/06/11 в 19:03
 Dark404

джой вчера мне два файла по почте скинул, которые заменить надо чтоб пхп не рендерило. и действительно заработало так как мне нужно. а вот сегодня с тренировки пришёл, включаю статистику тумб в дтр - смотрю, а там все тумбы удалены нахер почемуто. я обновил темплейт и вобще в админку заходить перестало - выдаёт ошибку:
Код:
Fatal error: This encoded file is corrupted. Please refer to http://www.zend.com/support/support_faq.php?id=loader_file_corrupt for further help in /var/www/domains/mydomain.com/dtr/admin/admin.php on line 0

пытаюсь обратно старые файлы по фтп залить - пишет ошибку (в WinSCP):
Код:
General failure (server should provide error description).
Error code: 4
Error message from server: Failure
Request code: 3

короче не ясно толи со скриптом что-то, толи мне сервак взломали. одно ясно точно - моему сиджу уже пизда, т.к. минимум 15 часов морда стоит без тумб.

elektronik вроде такое я еще непробовал. если удастся наладить работу сиджа - попробую твой вариант


Эта страница в полной версии