Фон

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

Код

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

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

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

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

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

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

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

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

0
Bobby 28 Авг 2011 в 16:24

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);
?>
0
Lekensteyn 28 Авг 2011 в 12:32

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

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

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

2
Nate 13 Ноя 2011 в 12:27