0

我必须从 PHP 中隐藏一些扩展名为 .png、.php 和 .html 的文件。

.htaccess 工作正常

IndexIgnore *.png
IndexIgnore *.php
IndexIgnore *.html

但是,我想使用 PHP 隐藏文件。

我使用这个脚本:

<?php
    $myfolder = realpath(dirname(__FILE__));
    $handle = opendir("$myfolder");
    while($name = readdir($handle)) 
        echo "$name<br>";
    }
    closedir($handle);
?>

但是,我仍然可以看到这些文件。感谢所有可以提供帮助的人。

4

3 回答 3

3

这是使用正则表达式的方法

<?php
    // Regex with which to hide some file types
    $ignore_regex = '/(\.png|\.php|\.html)$/';

    $myfolder = realpath(dirname(__FILE__));
    $handle = opendir("$myfolder");
    while($name = readdir($handle)) {
        // Check if this name matches the ignore regex
        if(preg_match($ignore_regex, $name)) {
            continue;
        }
        echo "$name<br>";
    }
    closedir($handle);
?>
于 2012-08-10T21:38:03.563 回答
2

PHP 直接读取文件系统,它不通过网络服务器读取文件。因此它忽略了 .htaccess 文件。

您需要在循环中手动检查这些文件类型,然后忽略它们。

于 2012-08-10T21:35:55.950 回答
0

PHP 有一个叫做glob的函数,它将返回匹配模式的文件。这可能是您需要使用的。

正如下面的Rocket所指出的,这里有一个非常有用的关于glob 模式的简短教程。

仅用于名称就值得使用:)

于 2012-08-10T21:42:48.507 回答