|
|
|
| Есть переменная:
$page=intval($_GET['page']);
|
Можно ли смело подключать инклуд???
$inc=include($page);
if($inc!=true)
{
$inc='1.php'; // Если инклуд не сработал, значит грузим главную страницу
}
|
| |
|
|
|
|
|
|
|
для: nikolayers
(24.01.2011 в 23:09)
| | Попробуйте :) | |
|
|
|
|
|
|
|
для: nikolayers
(24.01.2011 в 23:09)
| | Лучше не стоит... такой include позволяте выполнить произвольный PHP-код, который можно расположить на стороннем хосте. По сути вы отдаете управление сайтом любому встречному-поперечному и даете ему полномочия для удаления файлов, извлечения паролей и т.п. | |
|
|
|
|
|
|
|
для: cheops
(25.01.2011 в 12:36)
| | как можно подключить произвольный код, передав include в качестве параметра лишь строку цифр (не то что без пути, но даже без расширения имени файла)?
Если, конечно, не допускать загрузки файлов с произвольным именем в каталог с исполняемым скриптом. | |
|
|
|
|
|
|
|
для: Trianon
(25.01.2011 в 13:24)
| | А... intaval() не заметил, тогда, да, опасности нет. | |
|
|
|
|
|
|
|
для: nikolayers
(24.01.2011 в 23:09)
| | Наверно правильнее будет
<?
define('DS',DIRECTORY_SEPARATOR);
define('ROOT_PATH',realpath(dirname(__FILE__)).DS);
$page=!empty($_GET['page']) ? intval($_GET['page']) : NULL;
$path_file = is_file(ROOT_PATH.$page.'.php') ? ROOT_PATH.$page.'.php' : ROOT_PATH.'1.php';
include($path_file);
|
но лучше делать условие через оператор switch-case
или использовать __autoload( ) для подгрузки нужного контроллера
$_GET['page'] пропустить через trim( ) для очистки от пробелов | |
|
|
|