我的代码:
<?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.
我想问一下如何禁用它们。
它检查并写入错误。找不到页面,但警告:/
感谢您的帮助
答案 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.');
?>