没有这样的文件/目录警告

时间:2015-01-16 15:00:01

标签: php

我的代码:

        <?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.

我想问一下如何禁用它们。

它检查并写入错误。找不到页面,但警告:/

感谢您的帮助

2 个答案:

答案 0 :(得分: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.');
}

答案 1 :(得分:0)

您要检查以确保该文件确实存在。正如上面的评论所说,禁用警告不会帮助您确保代码按照它的方式运行。我不会在帖子中说出文字的语言,但是我假设如果$ stranka与正则表达式不匹配,你想说&#34;无效的参数;不存在。&#34;因此,除了检查变量是否与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.');
?>