Нет такого файла / каталога предупреждение

0

мой код:

        <?php 
        if (isset($_GET['stranka']))
                $stranka = $_GET['stranka'];
        else
                $stranka = 'index';
        if (preg_match('/^[a-z0-9]+$/', $stranka))
        {
                $vlozeno = include('stranky/' . $stranka . '.php');
                if (!$vlozeno)
                        echo('Chyba. Stránka nenalezena.');
        }
        else
                echo('Chyba. Neplatný parametr.');
    ?>            

У меня есть следующие предупреждения:

Warning: include(stranky/uzivatel.php): failed to open stream: No such file or directory in C:\xampp\htdocs\test\index.php on line 96

Warning: include(): Failed opening 'stranky/uzivatel.php' for inclusion (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\test\index.php on line 96
Chyba. Stránka nenalezena.

И я хочу спросить, как их отключить.

Он проверяет и записывает Error. Страница не найдена, но предупреждения:/

Спасибо за помощь

  • 4
    Вы никогда не должны отключать предупреждения, вы должны кодировать, чтобы обрабатывать их изящно.
  • 1
    file_exists
Показать ещё 2 комментария
Теги:

2 ответа

2
Лучший ответ

если файл существует после фактического включения файла, он не будет работать, вы всегда получите предупреждение, которое вы не должны просто отключать и игнорировать, лучший способ сделать это, если при первом тестировании, если файл существует, и включая его, или если он не существует, отобразите ошибку.

заменить:

$vlozeno = include('stranky/' . $stranka . '.php');
if (!$vlozeno)
    echo('Chyba. Stránka nenalezena.');

От:

if(is_file('stranky/' . $stranka . '.php')){
   include('stranky/' . $stranka . '.php');
}
else {
   echo('Chyba. Stránka nenalezena.');
}
  • 0
    Огромное спасибо :)
0

Вы хотите проверить, действительно ли файл существует. Как сказано выше, отключение предупреждений не поможет вам убедиться, что ваш код функционирует так, как он делает. Я не говорю на языке текста в сообщении, но я предполагаю, что если $ stranka не соответствует Regex, вы хотите сказать "Недопустимый параметр: не существует". Поэтому, помимо проверки соответствия переменной Regex, вы должны убедиться, что она существует до ее включения.

 <?php 
        if (isset($_GET['stranka']))
                $stranka = $_GET['stranka'];
        else
                $stranka = 'index';
        $includeFile = 'stranky/' . $stranka . '.php';
        if (preg_match('/^[a-z0-9]+$/', $stranka) && file_exists($includeFile))
        {
                $vlozeno = include($includeFile);
                if (!$vlozeno)
                        echo('Chyba. Stránka nenalezena.');
        }
        else
                echo('Chyba. Neplatný parametr.');
?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню