@ssass70

Почему варнинг?

<?php

$p = $_SERVER['REQUEST_URI'] == '/' ? 'home' : substr($_SERVER['REQUEST_URI'], 1);

if (file_exists('router/common'.$p.'.php')) {
    include 'router/'.$p.'.php';
} else {
    include 'router/404.php';
}
  • Вопрос задан
  • 373 просмотра
Пригласить эксперта
Ответы на вопрос 4
@Remdev
Как минимум, на наличие проверяется один файл, а подключается уже другой(потому что пути разные).

Должно было быть как-то так
if (file_exists('router/'.$p.'.php')) {
    include 'router/'.$p.'.php';
} else {
    include 'router/404.php';
}


Ну а на самом деле, лучше не подключать файлы, проверяя лишь наличие и не фильтруя как-либо ещё
Ответ написан
@magarif
Программист
Выведите так и посмотрите есть ли файл
$p = $_SERVER['REQUEST_URI'] == '/' ? 'home' : substr($_SERVER['REQUEST_URI'], 1);

$filename = 'router/common'. $p .'.php';

echo $filename;

if (file_exists($filename)) {
    include $filename;
} else {
    include 'router/404.php';
}
Ответ написан
Комментировать
BusteR27
@BusteR27
Lead bitrix dev
А если в урле передать .../../../../etc/passwd ?

А вообще посмотреть в сторону фреймворков.

Тот же Slim
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Вообще налицо попытка сделать роутер, но фишка в том что роутер как раз и делается для работы с белым списком, а у вас получается роутер с правилами "щупайте все что есть и до чего достанете, мне не жалко". Не поленитесь сделать массив "белых" урлов в формате
['url'=>'includePath','url1'=>'includePath1','url2'=>'includePath2']
или что то подобное. Можно даже посмотреть готовые решения и на их основе чего-то построить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы