allow_url_include
– это способ разрешить allow_url_include
только одного URL-адреса. возможно, с Htaccess или PHP?
Нет. Чтобы получить содержимое URL-адреса, используйте file_get_contents()
. Затем, чтобы отправить результат обратно в ожидающий браузер, просто используйте echo()
.
$contents = file_get_contents('http://www.example.com/'); echo( $contents );
Вышеизложенное требует, чтобы вы установили config allow_url_fopen=1
(который уже установлен по умолчанию).
Если бы вы использовали include
, вместо подхода, который я показал выше, было бы одно существенное различие: include
также выполняет любой PHP-код, который он находит внутри извлеченного документа. В общем, это действительно опасно, если вы не знаете, что вы контролируете 100% содержимого включенного документа.
Тем не менее: если вы хотите, чтобы код работал точно так же, как include
, вы можете сделать что-то вроде следующего (что безопаснее, потому что он извлекает только один URL-адрес, и он не требует разрешения allow_url_include
).
$contents = file_get_contents('http://www.example.com/'); eval('?>'.$contents);
Если вы сделаете это, убедитесь, что вы контролируете полное содержимое удаленного URL-адреса . Если кто-то другой контролирует этот файл, они смогут выполнить произвольный код на вашем сервере. Не позволяйте этому случиться.
Ну, зачем вам это нужно, у вас есть контроль над кодом, вы можете просто использовать один URL-адрес во время включения. Кроме того, использование allow_url_include очень опасно. Если вы все еще хотите использовать, вы можете сделать это таким образом.
Сделать пользовательскую функцию (примерный код)
function url_include($url){ //now check if $url is the one you want to be included if($url=="http://www.mysite.com/file.php"){ include($url); }else{ //show error or something. } }
теперь используйте этот url_include("http://www.mysite.com/file.php");
на вашей странице, чтобы включить URL.
Надеюсь это поможет