Использовать серверную часть. Включает команду «include» в html-файл.

Фон

Я пытаюсь включить rss-канал с помощью php в html-документ.

Код

<?php
include ("feed url");
?> 

Я использовал команду ssl, чтобы успешно добавить тег включения в html-файл, подобный этому.

<!--#include virtual="rssfeed.php" -->

который отлично работает после редактирования файла htaccess. Теперь проблема в том, что в моем php im, использующем include («URL-адрес канала»), я получаю эту ошибку:

Предупреждение: include() [function.include]: доступ к файлам по URL-адресу отключен в конфигурации сервера в path/rssfeed.php в строке 2.

Предупреждение: include(url-канал) [function.include]: не удалось открыть поток: не удалось найти подходящую оболочку в path/rssfeed.php в строке 2

Теперь следует отметить, что я попытался установить php_value allow_url_fopen 1, но не повезло, так как файлы хранятся на стороннем хостинг-сервере, поэтому у меня нет большого доступа, поэтому они заблокировали меня от включения allow_url_fopen по понятным причинам. Итак, мой вопрос в том, как мне подойти к этой проблеме? Любые направления будут значительно оценены.

Спасибо всем за чтение.


person Bobby    schedule 28.08.2011    source источник
comment
Я не уверен, что понимаю, что вы пытаетесь сделать. Можете ли вы объяснить это немного подробнее?   -  person gargantuan    schedule 28.08.2011
comment
echo '<iframe src="feed url"></iframe>'; наверное?   -  person hakre    schedule 28.08.2011
comment
Я верю, что @DaveRandom получил то, чего я пытаюсь достичь. Я просто пытаюсь вытащить содержимое rss-канала на свою html-страницу, используя php   -  person Bobby    schedule 28.08.2011
comment
Бобби, предложение @hakre стоит рассмотреть, так как оно снижает нагрузку на ваше приложение и позволяет клиенту выполнять извлечение данных фида. Если вы сначала загрузите его на свой сервер и перенаправите в браузер, это приведет к гораздо более медленной загрузке страницы. С <iframe> остальная часть вашего контента будет загружаться и отображаться сразу же, даже если у сервера фидов есть проблемы, что вам нужно учитывать...   -  person DaveRandom    schedule 28.08.2011
comment
Хороший вопрос @DaveRandom +1 Я уже изучаю iframe. Спасибо   -  person Bobby    schedule 28.08.2011
comment
О, тогда вы могли бы искать echo file_get_contents('http://example.com'); вместо этого :)   -  person hakre    schedule 28.08.2011


Ответы (2)


include "http://..." — плохая идея, потому что содержимое http://... оценивается как PHP-код, который открывает ваш сайт для атак, если кто-то может внедрить PHP-код в ответ на этот RSS-канал.

Используйте curl, если хотите отобразить данные с другого сайта. Пример из Руководства по PHP:

<?php
// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);

// grab URL and pass it to the browser
curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);
?>
person Lekensteyn    schedule 28.08.2011

Ваш сервер настроен таким образом, что вы не можете подключиться из удаленного места. Это распространено в средах общего хостинга, чтобы помочь снизить нагрузку на сервер и уменьшить вероятность случайного запуска вредоносного кода.

Однако, если я вас правильно понимаю, вы все равно не можете просто включить RSS-канал с помощью конструкции include(), потому что это недопустимый код PHP - include() ожидает, что путь будет действительным файлом исходного кода PHP. То, что вы делаете, если ваш сервер позволяет вам это делать, приведет либо к бесполезному выводу, либо к ошибке синтаксического анализа.

Вам необходимо подключиться к RSS-каналу (например, с помощью cURL или fsockopen() в зависимости от желаемого уровня контроля над запросом к удаленному сайту) и проанализируйте данные фида, чтобы вы могли выводить их в удобном формате.

person DaveRandom    schedule 28.08.2011