А как эту фичу подключить? Я думал, allow_url_fopen, но у меня стоит на On, а URL-ы всё равно не инклудятся...If "URL fopen wrappers" are enabled in PHP (which they are in the default configuration), you can specify the file to be included using an URL (via HTTP) instead of a local pathname. If the target server interprets the target file as PHP code, variables may be passed to the included file using an URL request string as used with HTTP GET. This is not strictly speaking the same thing as including the file and having it inherit the parent file's variable scope; the script is actually being run on the remote server and the result is then being included into the local script.
А как зависит include от register_globals?!надо в php.ini проставить: globals off , тогда файл так подключить будет невозможно
Кром, не путай людей своими советами, register_globals здесь непричём. Если пользователь имеет дыру в скрипте то, register_globals = off её не заткнут.Автор оригинала: Кром
include не зависит, зависит переменная в include. При register_globals = off, все пользовательские переменные изолируются от переменных самой программы.
Т. е. если в программе есть переменная $some_data, ее можно перекрыть таким образом: http://host.com/index.php?some_data=another_value
а при register_globals = off, это не получится
Если твой скрипт был так написан, то он просто перестанет работать.Автор оригинала: Кром
Т. е. если в программе есть переменная $some_data, ее можно перекрыть таким образом: http://host.com/index.php?some_data=another_value
а при register_globals = off, это не получится
У меня это работает и в виндах, и в unix'е. В чем именно выражается "не подключается"?Автор оригинала: metton
Оно подключается как-то по-другому или это не работает на винде?
Эта фича зовется taint mode. Надеюсь, когда-нибудь это появится и в PHP -- чайникам эта фича очень помогла бы в деле выпрямления рук. Равно как и аналог "use strict".Автор оригинала: metton
Можно поподробнее, если уж упомянул?
Если при не выполнении вот этого твоего условия "if (какое-то условие) " тебе ещё гдето дальше в скрипте понадобилась переменная $some_value (которая _НЕ_ определена), значит ты допустил ошибку в программе. Это неправильный подход к программированию, а самое главное это не имеет ровным счётом _никакого_ отношения к тому что здесь обсуждалось.Автор оригинала: Кром
to ONK
1. файл inc.php
<?
$some_value = 1;
?>
2. файл index.php
<?
if (какое-то условие) include("inc.php");
echo "$some_value";
?>
Если условие во втором файле не выполняется, переменная не отобразится, что вроде и требовалось, но при register_globals = on, ее можно заменить любым зловредным значением. Все что я хотел сказать.
Почему это не получится?! Если у человека стоит register_globals = off, не думаю, что он будет использовать просто $some_data, пытаясь получить переменную из строки запроса. Я, конечно, знаю и умею ещё далеко не всё, но уж это-то я могу понять...include не зависит, зависит переменная в include. При register_globals = off, все пользовательские переменные изолируются от переменных самой программы.
Т. е. если в программе есть переменная $some_data, ее можно перекрыть таким образом: http://host.com/index.php?some_data=another_value
а при register_globals = off, это не получится
В том, что вот такУ меня это работает и в виндах, и в unix'е. В чем именно выражается "не подключается"?
А если у меня [много] фалов???Если надо сделать выборочную загрузку библиотек или исполняемых модулей, делай лечше так:
index.php?f=5
<?php
.
.
switch ($_GET['f']) {
case 1:
include ('xxx.php');
break;
case 2:
include ('yyy.php');
break;
case 5:
include ('zzzz.php');
break;
А если много файлов, то есть такое понятие как массив, а если очень много, то и база данныхhttp://domain.com?page=../../../etc/passwd