首页
Portal
业界资讯
社区
BBS
我的家园
Space
个人空间
导读
Guide
登录
/
注册
用户名
Email
自动登录
找回密码
密码
登录
注册
搜索
搜索
本版
帖子
用户
本版
帖子
用户
帖子
好友
道具
勋章
收藏
任务
淘帖
门户
导读
设置
我的收藏
退出
腾讯QQ
微信登录
首页
›
≡≡网络技术≡≡
›
PHP语言
›
Veno-File-Manager (VFM4)免数据库云盘系统class.locati ...
返回列表
CMS
Veno-File-Manager (VFM4)免数据库云盘系统class.location.php文件释义
[ 复制链接 ]
灰儿
2022-8-29 06:16:42
Veno-File-Manager (VFM4)免数据库云盘系统,根目录/vfm-admin/class/class.location.php文件释义根目录/vfm-admin/class/class.location.php //保存有关路径位置的信息的类
location类的成员对象 getDir() //获取当前目录
getDir($prefix, $encoded, $html, $upper, $dir = false)
$prefix, //值为真时前缀包括前缀(“./”)
$encoded, //值为真时URL编码字符串
$html, //值为真时html编码字符串
$upper, //返回父目录
$dir = false //相对路径
经测试,第4个参数如果是 $totdirs -1,返回的始终是根目录,不是父目录
location类的成员对象 getCleanPath() //获取干净的目录路径(路径中去除开始目录'starting_dir'路径)
location类的成员对象 checkUserDir 代码块如下:
/**
* Check if directory is available for user
*
* @param string $relative relative path to index.php
*
* @return true/false
*/
public function checkUserDir($relative = false)
{
global $gateKeeper;
global $setUp;
$thispath = $this->getDir(true, false, false, 0, $relative);
if (!is_dir(realpath($thispath))) {
return false;
}
$getUserInfo = $gateKeeper->getUserInfo('dir');
if ($getUserInfo === null) {
return true;
}
$startdir = $setUp->getConfig('starting_dir');
$userpatharray = $getUserInfo !== null ? json_decode($getUserInfo, true) : array();
$thiscleanpath = ltrim($thispath, './');
$cleanstartdir = rtrim(ltrim($startdir, './'), '/');
$thispatharray = explode('/', $thiscleanpath);
$checkpath = $thispatharray[0] === $cleanstartdir && strlen($cleanstartdir) ? $thispatharray[1] : $thispatharray[0];
$pathcounter = $thispatharray[0] === $cleanstartdir && strlen($cleanstartdir) ? (int)2 : (int)1;
// Check for multiple folders assigned
foreach ($userpatharray as $value) {
// Check if a sub/sub folder is assigned
$userdirarray = explode('/', $value);
$usersubs = count($userdirarray) - 1;
if ($usersubs > 0) {
$subscounter = $usersubs + $pathcounter;
for ($i = $pathcounter; $i < $subscounter; $i++) {
$checkpath .= '/'.$thispatharray[$i];
}
}
// Finally check if the location is accessible by the user
if ($value === $checkpath) {
return true;
}
}
return false;
}
复制代码
其中部分英文注释释义:
/**
*检查目录是否可供用户使用
*@param(参数) string(字符串) $relative 指向index.php的相对路径
*@return(返回) true/false (真/假)
*/
// Check for multiple folders assigned
//检查分配的多个文件夹
// Check if a sub/sub folder is assigned
//检查是否分配了子/子文件夹
// Finally check if the location is accessible by the user
//最后,检查用户是否可以访问该位置
代码中相关成员变量释义如下:
$getDir:./uploads/user/ //url地址中的路径
$thispath:./uploads/user/
//当前路径
$thiscleanpath:uploads/user/
//当前路径去掉“./”
$getUserInfo:["temp","up","uploads","user"]
//当前用户有权访问的目录
$startdir:./uploads/
//上传根目录
$userpatharray: Array ( [0] => temp [1] => up [2] => uploads [3] => user )
//当前用户目录转为数组格式
$cleanstartdir:uploads
//清除上传根目录中的“./”
$thispatharray: Array ( [0] => uploads [1] => user [2] => )
//把当前用户路径转为数组格式,分割符“/”
$checkpath: string(4) "user"
//检查当前用户目录
$pathcounter: 2
//当前目录正确返回数字2,否则返回数字1
此文件中location类的成员函数 editAllowed 代码块如下:
/**
* Check if editing is allowed into the current directory,
* based on configuration settings
*
* @param string $relative relative path to index.php
*
* @return true/false
*/
public function editAllowed($relative = false)
{
global $setUp;
$totdirs = count($this->path);
$father = $this->getDir(false, true, false, $totdirs -1);
$hidden_dirs = $setUp->getConfig('hidden_dirs');
if (!$hidden_dirs) {
return false;
}
if (in_array(basename($father), $hidden_dirs)) {
return false;
}
if ($this->checkUserDir($relative) === true) {
return true;
}
return false;
}
复制代码
其中英文注释释义:
/**
* Check if editing is allowed into the current directory, //检查是否允许编辑当前目录,
* based on configuration settings //基于配置设置
*
* @param string $relative relative path to index.php
*
* @return true/false
*/
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
回复
本版积分规则
回帖后跳转到最后一页
灰儿
管理员
9838篇
主题总数
7
总热度
提问
+关注
产品动态
2024-05-13
关于webapp与WEB-INF的记录
2024-05-13
泛微(weaver)e-cology_V10公文管理,上传套红模板教程
2024-05-13
防火墙指标:吞吐量、时延、新建连接速率、并发连接数
2024-05-13
核心路由器十项性能指标
2024-05-11
神州数码(DCN) DCME-320 路由器(linux软路由)常用命令详解
2024-05-10
泛微(weaver)e-cology_V10公文管理模块套红模板制作教程
2024-05-04
Switch EdiZon SE 金手指插件使用 图文教程
2024-04-29
网御星云入侵防护系统_V6000流量控制配置实例
热点推荐
1
关于webapp与WEB-INF的记录
2
泛微(weaver)e-cology_V10公文管理,上传套红模板教程
3
防火墙指标:吞吐量、时延、新建连接速率、并发连接数
4
核心路由器十项性能指标
5
神州数码(DCN) DCME-320 路由器(linux软路由)常用命令详解
6
泛微(weaver)e-cology_V10公文管理模块套红模板制作教程
7
Switch EdiZon SE 金手指插件使用 图文教程
8
网御星云入侵防护系统_V6000流量控制配置实例
热门板块
PC操作系统
启动和引导
手机操作系统
硬件相关
办公软件
多媒体技术
产品动态
2024-05-13
关于webapp与WEB-INF的记录
2024-05-13
泛微(weaver)e-cology_V10公文管理,上传套红模板教程
2024-05-13
防火墙指标:吞吐量、时延、新建连接速率、并发连接数
2024-05-13
核心路由器十项性能指标
2024-05-11
神州数码(DCN) DCME-320 路由器(linux软路由)常用命令详解
2024-05-10
泛微(weaver)e-cology_V10公文管理模块套红模板制作教程
2024-05-04
Switch EdiZon SE 金手指插件使用 图文教程
2024-04-29
网御星云入侵防护系统_V6000流量控制配置实例
热点推荐
1
关于webapp与WEB-INF的记录
2
泛微(weaver)e-cology_V10公文管理,上传套红模板教程
3
防火墙指标:吞吐量、时延、新建连接速率、并发连接数
4
核心路由器十项性能指标
5
神州数码(DCN) DCME-320 路由器(linux软路由)常用命令详解
6
泛微(weaver)e-cology_V10公文管理模块套红模板制作教程
7
Switch EdiZon SE 金手指插件使用 图文教程
8
网御星云入侵防护系统_V6000流量控制配置实例
热门板块
PC操作系统
启动和引导
手机操作系统
硬件相关
办公软件
多媒体技术
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言
了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言
了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。