我有一个函数,它应该将特定库的所有文件夹/子文件夹/子子文件/等等与用户当前所在的目录进行比较。如果匹配,则认为是return true
。
此功能允许我为用户显示不同的功能,具体取决于他对当前所在文件夹/子文件夹的权限。
但是,当用户位于子文件夹1或更深层(子文件夹1,子文件夹2,子文件夹3 ...)时,我的功能不会return true
这是树的样子:
main_repertory => folder1 => subfolder1 => subfolder2 =>等...
这是我的功能:
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);
来查看自己是否显示,以及是否匹配。这就是我得到的:
(粗体为echo($directory);
的文本(用户的当前目录),正常文本是由echo($folder);
和&#34显示的文本;被授予的权限&#34;是显示的文本当$getprivileges
为真时。)
for Folder1(也可在主库中使用):
C:/瓦帕/网络/ GG / FTP /存储库/用户/先生/ folder1中 C:/瓦帕/网络/ GG / FTP /存储库/用户/先生/ folder1中 C:/ wamp / www / gg / ftp / repository / user / mister / folder1 授予的权限。
对于子文件夹1并且更深,它会停止显示&#34;授予的权限&#34;甚至$ folder和$目录匹配:
C:/瓦帕/网络/ GG / FTP /存储库/用户/先生/ folder1中 C:/瓦帕/网络/ GG / FTP /存储库/用户/先生/文件夹1 / subfolder1 C:/瓦帕/网络/ GG / FTP /存储库/用户/先生/ folder1中 C:/瓦帕/网络/ GG / FTP /存储库/用户/先生/文件夹1 / subfolder1 的 C:/瓦帕/网络/ GG / FTP /存储库/用户/先生/ folder1中/ subfolder1
有人告诉我,这可能是由于我无视递归电话的回传价值,但我真的不知道这意味着什么。
另外我注意到echo($ folder);两次显示相同的路径,这不是预期的,也许这与我的主要问题有关?
任何修复此功能的帮助都会非常适合!
非常感谢。
答案 0 :(得分:2)
您应该在scanDirectory函数中将scanubirectory的递归调用结果返回:
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; ?>