我遇到一些问题,循环检查每个文件夹/子文件夹/ 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);两次显示相同的路径?
如果您需要更多有关此功能的背景知识,我可以查看以前的问题,我可以查看以前的问题。我正在努力工作,但我希望我发布了足够的信息。
非常感谢。