定位文件夹及其所有子文件夹/子文件夹

时间:2015-11-03 14:22:30

标签: php

我的网站将文件管理器与成员系统集成在一起。

在注册时,会创建一个由该成员的用户名命名的文件夹,并为其授予权限(上传文件,创建文件夹,移动文件等),同时保留文件管理器的其余部分,包括其他成员的文件夹-只要。

我仍然是Php的新手,当我希望我的成员仍然拥有其主文件夹子文件夹的权限时,我遇到了一些麻烦。 有点像这样:

  

网站/文件管理器/用户/ USERNAME1

     

网站/文件管理器/用户/ USERNAME1 / subfolder1

     

网站/文件管理器/用户/ USERNAME1 / subfolder2

我可以使用以下命令在其主文件夹中获取我的成员的权限:

<?php
    $directory = $_SESSION['cwd'];
    $parent_directory = str_replace('\\', '/', dirname($directory));
    $user = $_SESSION['simple_auth']['username'];

    if ($directory == $parent_directory.'/'.$user){
        echo "permissions granted";
    }
    else {
        echo "permissions not granted";
    }
?>

检查用户是否在他的文件夹中并授予他权限(在此处表示为echo "permissions granted",但到目前为止,我找不到在子文件夹中应用此方法的方法。

有没有办法让我的例子“授予权限”也会出现在成员的子文件夹中,而不仅仅出现在有他们名字的文件夹中?

希望我的要求足够清楚,非常感谢你的帮助!

-Apatik

更新:

解决方案是使用递归scandir函数,当当前目录与扫描文件夹中的一个匹配时,该函数将return true

function scanDirectory($userdir = '', $directory){
    $folders = glob($userdir . '/*' , GLOB_ONLYDIR);
    foreach($folders as $folder){
        echo($folder.'</br>');
        if (($folder == $directory && gator::checkPermissions('r')) || (gator::checkPermissions('ru')) || ($userdir == $directory && gator::checkPermissions('r'))) {
            return true;
        }

        $scan_result = scanDirectory($folder, $directory);

        if($scan_result) {
           return true;
        }
    }
    return false;
}

scanDirectory($userdir, $directory);
?>

<?php if ($getprivileges == true): ?>
<p>Permissions granted.<p>
<?php endif; ?>

2 个答案:

答案 0 :(得分:1)

您可以使用scandir扫描目录。它返回包含每个目录和文件的数组。然后,您可以执行foreach以授予每个文件和目录的完全权限。

也许php.net scandir documentation上的解决方案适合您。

答案 1 :(得分:1)

解决方案是使用递归scandir函数,当当前目录与扫描文件夹中的一个匹配时,该函数将ForceTouch

return true

有关this thread的更多详情。