PHP包含许多子文件夹

时间:2019-06-24 22:42:51

标签: php

亲爱的

我的处境非常迫切:-(

几个月前,我开始学习Javascript,并写了几页关于无效的侄女到本星期五生日的娱乐。单独的页面可以。但是我仍然无法设置php,这让我感到非常震惊。我有两个较早的网站,其php代码运行得很好,因此我曾经将代码从那些网站复制到了我的新index.php。当然,我更改了文件夹的名称和文件的名称。我的两个网站都有菜单和子菜单,我的新网站只有菜单,没有子菜单,但是每个文件都有自己的文件夹。 我迅速将其翻译为英文,并使其简短,但原理是相同的。我尝试过:

<?php
$x = isset($_GET['x']) ? $_GET['x'] : 'hello';  

if (isset($x) && preg_match('/^[a-zA-Z0-9_-]+$/', $x))  {
    if (file_exists ("../pokus/".$x.".php"))  {
        include "../pokus/".$x.".php"; 
    } else {
        include (__DIR__)."/404.php";
    }
}
?>

,但据称文件“在此服务器上找不到”。自然,它们全部都上传到了我的服务器。

我的HTML代码:

<ul> 
    <li>
        <a href="/hello/"<?php echo $x == "hello" ? 'class="choice"' : '';?>>
            <img src = "pictures/hello.jpg" width = "320" height = "240"> 
        </a>
    </li>
    <li>
        <a href="/folder1/file1/" <?php echo $x == '../file1' ? 'class="choice"' : '';?>>
            <img src = "pictures/pict1-menu.jpg" width = "320" height = "240">
        </a>
    </li>
    <li>
        <a href="/folder2/file2/" <?php echo $x == '../file2' ? 'class="choice"' : '';?>>
            <img src = "pictures/pict2-menu.jpg" width = "320" height = "240">
        </a>
    </li>
    <li>
        <a href="/folder3/file3/" <?php echo $x == '../file3' ? 'class="choice"' : '';?>>
            <img src = "pictures/pict3-menu.jpg" width = "320" height = "240">
        </a>
    </li>
</ul>

在名为pokus的文件夹中,我有index.php和hello.php(=她生日的一些句子)。然后,我内部有子文件夹folder1和file1.php,内部有子文件夹folder2和file2.php等。我被迫使用许多子文件夹,因为每个子文件夹包含许多图片A1.jpg,A2.jpg ... D4.jpg使用JS FOR循环因此无法将它们混合在一起。

我非常惊讶,甚至无法将无法加载的index.php旁边的hello.php文件包含在内。我的Apache说“在此服务器上找不到此文件”。但是文件hello.php随打开index.php立即加载!为什么Apache如此偏执?

以下为现场插图:http://pokus.zlatberry.cz/

任何人都可以投入您的时间来帮助我吗?提前非常感谢!

2 个答案:

答案 0 :(得分:0)

我认为问题是您的文件夹名称很好,但是您的链接指向的是hello,而不是hello.php

如果提供php扩展名,它将正确显示文件。

答案 1 :(得分:0)

我在编程时已经意识到的事情:如果它太复杂或太复杂,则意味着必须更改逻辑。我建议您组织混乱,以便更轻松地进行调试。

尝试此文件是否存在:

$filename = "../pokus/".$x.".php";

if (file_exists($filename)) {
    include ($filename);
} else {
    include (__DIR__)."/404.php";
}

除此之外,请尝试将代码分成小块。很多三元运算符。他们有必要吗?如果您的所有文件都在上述文件夹中,则该程序会向您发送404,因为它不了解您的逻辑。我说的是为了调试,请尝试使用其他逻辑。回到基础。简单性通常效果很好。

示例:

if(isset($_GET['x'])){
 $x = $_GET['x'];
}...etc.