Скрипт отображающий сам себя.

Статус
В этой теме нельзя размещать новые ответы.

sal

Новичок
Скрипт отображающий сам себя.

Люди, подскажите можно ли написать такой ПХП скрипт, который бы вывдавал свой исходник на "выход". Т.е. допустим формировал HTML страницу.
 

sal

Новичок
Я конечно почитаю.
[ тут был бред я его удалил :)]
Уточню одну вешь. Меня интересует можно ли получить скрипт со всеми инклудами? Или надо читать файл находить include разбирать строку опять считывать файлы и их содержимое добавлять к содержимому полученному ранее?
 

zag

Guest
Если инклуды идут жесткие - include('../file.php'), без конструкций типа include($fileToInclude), то можно сделать парсер, который пробегает по загруженному файлу, находит инклуд, выдергивает путь к инклуду и вставляет файл.
Если второй вариант - при первом проходе заменяем все include($fileToInclude) на, допустим, echo "something".include($fileToInclude)."/something", соответственно после этого можем получить значения $fileToInclude, а дальше как вначале.
Это первое, что приходит в голову.

Не знаю, правда как быть с инклудами в циклах, если имя файла, который инклудишь при каждом проходе меняется..
 

sal

Новичок
Opik
Идея просто блеск! Действительно, если в каждый файл который инклудишь добавить эту строку, в итоге получается вывод содержаший весь код :)
 

digs

Новичок
А если имя файла в include заранее не известно, а вычисляется?
 

sal

Новичок
digs
А если имя файла в include заранее не известно, а вычисляется?
Поясню на примере свою мысль.
Есть файлы:
index.php
news.php
login.php

в каждом из них есть
PHP:
highlight_file(__FILE__);
теперь в index.php
PHP:
<?
echo 'start';
$file = $_GET['file'];

include($file);

highlight_file(__FILE__);
echo 'end';
?>
Так вот так как и в news.php и в login.php есть строка выводимая содержимое файла то в итоге будет выведено все (правда вместе с include, но его можно обрезать).
Вот примерно так :)
 

sal

Новичок
dorfey
Получит Warning что такого файла нет (сам только что проверил). ;-)
 

SiMM

Новичок
Это называется квайн (по крайней мере то, что в названии топика).
PHP:
highlight_file(__FILE__);
под его условия ну никак не катит.
Масса квайнов есть здесь, кроме того, данный вопрос уже обсуждался в где-то в недрах форума. Одно из решений было аналогом перлового и выглядело примерно так
PHP:
<?
printf($a = '<?
printf($a = %c%s%c, 39, $a, 39);
?>', 39, $a, 39);
?>
 

phprus

Moderator
Команда форума
sal
Получится не Warning, а дыра в безопосности. Таким образом хакер может выполнить на твоем сервере свой php скрипт и таким образом он может получить доступ к серверу.
 

sal

Новичок
SiMM
Спасибо! Раньше про quine не слышал!

-~{}~ 11.08.05 14:09:

phprus
Согласно правилам данного форума выкладывать большие куски когда не рекомендуется! А для пояснения моей идеи, проверка данных на корректность была не обязательна. Хотя конечно стоило вставить комментарий, что-то навроде:
PHP:
$file=$_GET['file'];
//проверка на корректность $file
...
include($file);
Тут вы, безусловно, правы.
А про warning была шутка, не думал что так дословно меня поймете с этим примером.

-~{}~ 11.08.05 15:05:

SiMM
Правильно ли я понимаю, что квайн не может вывести код программы который был указан до первого оператора printf?
 

Фанат

oncle terrible
Команда форума
Тема закрыта. Учитесь пользоваться поиском.

Прежде чем задавать вопрос - используйте поиск по форуму и FAQ:
На нахождение готового ответа на свой вопрос Вы потратите меньше своего и чужого времени, чем на создание новой темы.
http://faq.phpclub.ru
http://detail.phpclub.ru/
Поиск по форуму
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху