PDA

View Full Version : php функция readfile "вместо" require



crazy-mike
03-31-2012, 06:40 PM
Пусть и выглядит внешне как бред. Но php5 можно скомпилить так , что в качестве аргумента у readfile будет не имя файла , а URL.
В результате по readfile можно , например , внутри вывода одного скрипта вставлять результат работы совсем другого скрипта ( а не сам этот другой скрипт ).
URL , кстати , можно делать host-независимым - http://localhost/yoyo.php и т.д.
Основная разница по сравнению с require - выполняется полностью отдельно от "вызывающей программы".

profAleks
03-31-2012, 10:53 PM
Пусть и выглядит внешне как бред. Но php5 можно скомпилить так , что в качестве аргумента у readfile будет не имя файла , а URL.
В результате по readfile можно , например , внутри вывода одного скрипта вставлять результат работы совсем другого скрипта ( а не сам этот другой скрипт ).
URL , кстати , можно делать host-независимым - http://localhost/yoyo.php и т.д.
Основная разница по сравнению с require - выполняется полностью отдельно от "вызывающей программы".
Майк, на этом можно сделать хороший парсер ?

crazy-mike
04-01-2012, 02:45 AM
Майк, на этом можно сделать хороший парсер ?
На этом можно делать самоизменяемый код! :rofl:
php скрипт может генерировать другой php скрипт и запускать его "внутри себя" - и даже неоднократно различный.
:leader:

crazy-mike
04-01-2012, 04:22 PM
:bab:
Но там и более вменяемое применение этой радости есть. Допустим , хочется на страничку вставить что-то из БД на удалённом сервере. А на этом хостинге , где размещаешь скрипт , поддержки интерфейсов для работы с БД просто нет.
Конечно же хочется вызвать оттуда , где оно есть. Но при этом не хочется ни парсить xml ни JSON из JavaScript. Можно и всё сделать на этом сервере - но получить данные с удалённого сервера с вообще без всякой мути с "промежуточным представлением данных".



<?
ob_start("ob_gzhandler");
echo "<?xml version='1.0' encoding='UTF-8'?>";
echo "<!DOCTYPE html>";
?>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="chrome=1" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8; lang=uk" />
<title>References</title>
<style type="text/css" media="all" >
body { background-color: #000000; color: #f2f200; }
header { color :#00ff00; }
button { cursor :pointer; }
header{ display :table; font-weight :bold; }
header button { margin-left :1em; margin-bottom :3px; border :1px outset; }
a { color :#ffffff; cursor :pointer; margin-left :5px; font-weight :bold;
border :none; text-decoration :none; }
a:link { color :#00ff00; }
a:visited {color :#00ff00; }
a:hover {
background-color :#ffff00; color :#000000;
}
a:active {
color :#ffff00; background-color :#ff0000;
}
#xtab { display :table; width :100%; }
#xtab a { display :table-row; border-collapse :collapse; }
#xtab a p { display :table-cell; border :1px solid #161616;
padding-left :0.5em; border-collapse :collapse;
}
</style>
</head>
<body>
<?
readfile("i.lov.putin.ru/info.php");
?>
</body>
</html>


Ну и где-то далеко на i.love.putin.ru :



<?
require "putin.php";
ob_start("ob_gzhandler");
$dbc=pg_connect(fromPutin());
$q="select to_char(up,'DD Mon YYYY') as da,".
"substr(up::time,0,9) as tm,lnk,descr ".
"from links where exists(select icat,ilink from xrel where icat=1119 and ilink=links.isn)".
"order by up desc";
$r=pg_query($dbc,$q); $n=pg_num_rows($r);
echo '<div>='.$n.'</div>';
echo '<section style="display :block; width :100%; height :30em; overflow :scroll;">';
echo '<div id="xtab" >';
$i=0;
while($i<$n) {
list($da,$tm,$lnk,$descr)=pg_fetch_row($r,$i); $i++;
$lnk=pg_unescape_bytea($lnk);
$descr=pg_unescape_bytea($descr);
$k=strlen($descr);
if($k>50) $descr=substr($descr,0,50);
$descr=iconv("KOI8-U","UTF-8//IGNORE",$descr);
echo '<a href="'.$lnk.'">';
echo '<p>'.$descr.'</p>';
echo '<p>'.$da.' '.$tm.'</p>';
echo '</a>';
};
pg_close($dbc);
echo "</div></section>";
?>



Прелесть в том , что всё отработается на совсем другом сервере - и просто результат работы вставится на "своём" хостинге.

смешно
04-05-2012, 02:34 PM
вполне интересная вещь.

crazy-mike
04-05-2012, 03:38 PM
вполне интересная вещь.
просто таким способом не так уж и трудно устроить что-то похожее на фишинг какого-нибудь сайта. Читаешь "чужой контент" в "свою страничку" и выставляешь кучу разных обработчиков событий - но уже своих. :rofl:

profAleks
04-05-2012, 09:13 PM
просто таким способом не так уж и трудно устроить что-то похожее на фишинг какого-нибудь сайта. Читаешь "чужой контент" в "свою страничку" и выставляешь кучу разных обработчиков событий - но уже своих. :rofl:
НафиГ фишинг, давай Rambler запарсим и повесим туда Сапу и гугл-адсенс. :wink1:

crazy-mike
04-06-2012, 04:02 PM
НафиГ фишинг, давай Rambler запарсим и повесим туда Сапу и гугл-адсенс. :wink1:
Там одна шиза есть - "relative URL". :rofl:
( из-за этого всё может не получиться )