Php opendir() 在使用 GET 时发出警告



我的一个PHP应用程序有问题。我使用以下代码块将我的函数包含在应用程序中:

    // Opening the directory where the functions are located and reading the contents
    if (is_dir(__FDIR__)){
        if ($dh = opendir(__FDIR__)){
            while (($file = readdir($dh)) !== false){
                if ($file != "." && $file != "..") {
                    //include all files found in the functions directory
                    include_once(__FDIR__.$file);
                }
            }
            closedir($dh);
         }
    }

这通常工作正常,但是一旦我在URL中加载带有$_GET参数的URL,我就会收到以下警告:

    Warning: readdir(): 11 is not a valid Directory resource in C:xampphtdocsportcmsfunctions.php on line 6
    Warning: closedir(): 11 is not a valid Directory resource in C:xampphtdocsportcmsfunctions.php on line 16

奇怪的是,$_GET 参数不针对上述代码。 它们被传递给不同的代码块,以选择应该加载哪个内容div。此外,在我使用此设置的另一个应用程序中,它可以完美运行而不会引发任何警告。

编辑:非工作示例如下:在索引中.php我有以下代码:

    <?php 
//starting the session;
session_start();
//getting required files;
require_once('fileloc.php');                            //file locater
require_once(__CONFIG__);                       //config file;
require_once(__FUNCTIONS__);                //function loader-file;
require_once(__CDIR__."class.db.php");      //database class for database manipulation (replace with class-loader?);
//verifying the logged on user;
$ver = login($_SESSION['username'], $_SESSION['pass']);
if (!isset($ver) || $ver != 1) {
    //could not verify user, destroying session and return to login screen;
    session_destroy();
    header('location: login.php');
}   
    //building the page;
require_once(__MDIR__. "header.php");
if ($ver == 1) {
    require_once(__MDIR__."main.php");
}
echo __FDIR__.'overview.php';
require_once(__MDIR__. "footer.php");
?>

其中包括我的配置文件以及我的定义文件(文件定位器)。它还包括main.php其中包含以下代码:

    <div class="container">
<div class="bar">
    <p>welcome: <b><?php echo $_SESSION['username']; ?> |  <a href="logout.php">logout</a></b></p>
</div>
<div class="nav">
    <ul>
        <li><a href="?mod=overview">overview</a></li>
        <!--<li><a href="">settings*</a></li>-->
        <li><a href="">pages</a></li>
        <li><a href="">portfolio management</a></li>
        <!--<li><a href="">themes*</a></li>
        <li><a href="">users*</a></li>
        <li><a href="">plugins*</a></li>-->
    </ul>
</div>
<div class="main">
<?php
    if (isset($_GET) && !empty($_GET['mod'])) {
        clean_input($_GET['mod']);
        include_once(__MDIR__.$mod.'.php');
    }
?>
</div>
</div>

如果我登录索引,则不.php在没有 ?mod=Overview 的情况下加载,一切都很整洁。 一旦我按下概述链接以加载概述"mod"(目前是一个仅包含"测试"一词的空文件),我就会收到警告。

为了验证我的常量没有问题,我在函数中交换了 FDIR.php 为目录的硬编码文件路径字符串。 这也没有解决警告。另一个奇怪的事情是,即使出现警告,函数似乎也像它们应该的那样加载。例如,检查登录名是否有效的函数是通过此函数加载的。而且似乎加载没有问题

希望我提供了足够的信息。 否则让我知道,以便我可以放置更多代码。

另请注意,我是Stackoverflow的新手,所以可能没有做对所有事情。然而,我确实在这里和互联网的其余部分研究了多个类似的问题,以找到解决方案。

提前致谢

我已经找到了导致问题的原因。在我的函数文件夹中,我有一个名为 mainloader 的脚本.php这包含了一些函数声明之外的内容(在将事物重写为函数后我忘记删除它)。

诚然,当我试图解决另一个问题时,我才发现这是问题所在,其中div 没有加载到正确的位置,而是在索引文档的开头。 当我删除剩余的代码时,div 弹出回原位,函数加载器停止弹出错误。

不过感谢您的调查!- 先生P

相关内容

  • 没有找到相关文章

最新更新