列出文件夹/子文件夹/等等的循环无法正常工作

时间:2015-11-04 22:10:59

标签: php

我遇到一些问题,循环检查每个文件夹/子文件夹/ etc的路径......如果其中一个匹配用户当前所在目录的路径,则返回true

当用户位于子文件夹1或更深层(子文件夹1,子文件夹2,子文件夹3 ...)时,我的函数似乎没有返回true

这是树的样子:

  

main_repertory => folder1 => subfolder1 => subfolder2 =>等...

这是我的功能:

<?php
    $directory = $_SESSION['cwd'];                  // current directory
    $user = $_SESSION['simple_auth']['username'];   // get username
    $repository = gatorconf::get('repository');     // get base repertory of the file manager
    $userdir = $repository.DS.'user'.DS.$user;      // user's repertory
    $getprivileges = scanDirectory($userdir, $directory);

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;
        }
        scanDirectory($folder, $directory);
    }
    return false;
}

scanDirectory($userdir, $directory);
?>

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

为了找到问题的来源,我添加了echo($folder.'</br>');和echo($ directory);看他自己是否被展示,以及他们是否匹配。这就是我得到的:

for Folder1(也可在主库中使用):

  

C:/瓦帕/网络/ GG / FTP /存储库/用户/先生/ folder1中   C:/瓦帕/网络/ GG / FTP /存储库/用户/先生/ folder1中    C:/ wamp / www / gg / ftp / repository / user / mister / folder1 授予的权限。

对于子文件夹1和更深层它会停止显示“权限已授予”,即使$ folder和$目录匹配:

  

C:/瓦帕/网络/ GG / FTP /存储库/用户/先生/ folder1中   C:/瓦帕/网络/ GG / FTP /存储库/用户/先生/文件夹1 / subfolder1   C:/瓦帕/网络/ GG / FTP /存储库/用户/先生/ folder1中   C:/瓦帕/网络/ GG / FTP /存储库/用户/先生/文件夹1 / subfolder1   的 C:/瓦帕/网络/ GG / FTP /存储库/用户/先生/ folder1中/ subfolder1

粗体文本为$directory(用户的当前目录),正常文本是echo($folder);显示的文本,“授予权限”是$getprivileges时显示的文本是的。

所以我不明白为什么我的函数从子文件夹1停止工作,即使一切看起来都很好..

另外(不太重要)我不知道为什么echo($ folder);两次显示相同的路径?

如果您需要更多有关此功能的背景知识,我可以查看以前的问题,我可以查看以前的问题。我正在努力工作,但我希望我发布了足够的信息。

非常感谢。

0 个答案:

没有答案