@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';
}
  • Вопрос задан
  • 363 просмотра
Пригласить эксперта
Ответы на вопрос 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, MySql, HTML, JS, CSS} developer
Вообще налицо попытка сделать роутер, но фишка в том что роутер как раз и делается для работы с белым списком, а у вас получается роутер с правилами "щупайте все что есть и до чего достанете, мне не жалко". Не поленитесь сделать массив "белых" урлов в формате
['url'=>'includePath','url1'=>'includePath1','url2'=>'includePath2']
или что то подобное. Можно даже посмотреть готовые решения и на их основе чего-то построить.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
HTML Academy Санкт-Петербург
от 110 000 до 130 000 руб.
CENTRA Новокузнецк
от 50 000 руб.
от 1 500 до 2 500 usd.
26 марта 2019, в 03:19
100000 руб./за проект
26 марта 2019, в 01:09
40000 руб./за проект
26 марта 2019, в 00:54
40000 руб./за проект