Включить / Требовать HTTP-адрес - PullRequest
1 голос
/ 23 августа 2010

Мне нужно включить файл PHP, который я могу получить только с полным HTTP-адресомЯ запутался в этой теме, я слышал, что это плохая практика.Как я могу решить это?

Ответы [ 3 ]

2 голосов
/ 23 августа 2010

из руководства: http://php.net/manual/en/function.include.php

также читать Предупреждение безопасности, которое прилагается

Если в PHP включены « URL fopen wrappers » (они входят в конфигурацию по умолчанию), вы можете указать файл для включения с помощью URL (через HTTP или другую поддерживаемую оболочку - см. «Список»). Поддерживаемых протоколов / оболочек для списка протоколов) вместо локального пути. Если целевой сервер интерпретирует целевой файл как код PHP, переменные могут быть переданы во включенный файл, используя строку запроса URL, как при использовании HTTP GET. Строго говоря, это не то же самое, что включение файла и наследование переменной области родительского файла; скрипт на самом деле выполняется на удаленном сервере, а затем результат включается в локальный скрипт.

1 голос
/ 23 августа 2010

Да, не рекомендуется включать через HTTP, если вы действительно не уверены в источнике.Если вы просто хотите получить его содержимое без выполнения кода PHP, вы можете использовать:

Для этого необходимо включить параметр PHP allow_url_fopen.Другой вариант, использующий cURL (бессовестно взятый из PHP Manual):

<?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);
?>

Если необходимо, вы должны передать его через htmlentities ().

Если вы находитесь на том же сервере, вы можетеиспользование:

<?php
readfile('footer.html');
?>
0 голосов
/ 23 августа 2010

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

...