QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: jiangtao9999

我编写的php文件管理器,大家提提意见!2003-9-19

[复制链接]
发表于 2003-10-2 13:51:38 | 显示全部楼层
hehe , 我在写自己的网站的开发时也是做了个文件管理器。
和你的很似。
1、上传、下载文件
2、重命名文件、目录
3、新建文件夹
4、修改文件、目录权限
5、回收站
6、剪贴板
我遗漏了tar、gzip,我想来交流一下制做经验。
我的下载功能写的是粗制滥造。
想找个进度条的编写方法。
还有些地方,象覆盖操作被我省去了。
你的修改文件所有者功能,我也很感兴趣。
因为我的系统在linux下运做,修改文件所有者好象要求有更大的权限才行。
这问题怎么解决呢?学习交流一下你的方法。
回复

使用道具 举报

 楼主| 发表于 2003-10-4 07:41:14 | 显示全部楼层

tar gzip 的功能是我在查看PHP for Win的文件时无意中找到的。
PHP自带一个tar压缩的类代码。直接include就可以了。
使用非常简单(只是有点大

修改文件所有者的功能还没有进行详细测试,只是把代码放了上去。
我是在Win系统下开发的,所以linux系统的功能没有重点开发。
修改文件所有者需要文件的所有者是Apache服务器所使用的用户。
不然需要用system()等函数借助 su 来完成。
这在空间服务上的机器上是不可能的。
所以这部分功能我搁置了,只是放上的代码。

关于进度条……推荐你算了吧……
网页所获得的数据只限于浏览器,用处不大……

我做的主要功能是压缩,linux下的那部分限制太多了……
回复

使用道具 举报

发表于 2003-10-4 09:05:53 | 显示全部楼层
为什么不将用户权限和文件系统的权限机制分开处理呢?
邮件服务器就是个例子:
老的sendmail需要使用系统的帐号,有很多安全隐患;
而新的qmail的用户则和系统独立,相对要安全多了.

"PHP文件管理器"一个很有用的用途就是供协同开发小组存放管理文件用,如果每个人给个系统的权限那还得了?
可以在数据库中建立一个文件的索引,在同一目录及其子目录下存放以系统帐号apache为所有者,可读写,不可运行的一大堆文件,而PHP文件管理器的用户存放在数据库中,对这一堆文件的权限也保存在数据库中.这样,既突破了系统限制,又安全,而且还可以实现比系统权限更丰富的权限类型,而且更加跨平台.
回复

使用道具 举报

 楼主| 发表于 2003-10-4 09:14:42 | 显示全部楼层

我开发他的本意是上传论坛用的。
论坛动辄N百个文件,FTP上去太慢了……
以及免费空间的Web上传……

没想到还可以作为协同开发的工具……

我本不打算继续开发了,看来还应该继续写下去……
我会努力的。
回复

使用道具 举报

发表于 2003-10-6 15:29:03 | 显示全部楼层
1
谢了,tar gzip我想我知道怎么做了。
2
我用的就是空间服务,不会有su的可能。
修改文件所有者,看来是是没戏了。
3
我认为权限的问题可以做到,只是我写的东西不涉及到复杂的权限问题。
就没考虑进去。

开发覆盖操作时我碰到一个问题。
php里好象没有(我不确定)等待客户端输入命令的函数,而只接受表单提交。
要实现这个功能有什么好的方法吗?
回复

使用道具 举报

发表于 2003-10-7 09:49:34 | 显示全部楼层
让我来学习学习。
回复

使用道具 举报

 楼主| 发表于 2003-10-7 09:53:12 | 显示全部楼层
那个Gzip如果用GNU ZIP压缩需要PHP支持Zlib……
Tar没事……昨天刚在Linux测试的,一会还要从新编译PHP…… :-(


提交一个 TEXT 文本框,提交的文本应该可以用
system(),exec(),passthru()来执行,不过我没试验过……

附,3个函数的说明:

exec
执行外部程式。
语法: string exec(string command, string [array], int [return_var]);
传回值: 字串
函式种类: 作业系统与环境

内容说明
本函式执行输入 command 的外部程式或外部指令。它的传回字串只是外部程式执行后传回的最后一行;若需要完整的传回字串,可以使用 PassThru() 这个函式。
要是参数 array 存在,command 会将 array 加到参数中执行,若不欲 array 被处理,可以在执行 exec() 之前呼叫 unset()。若是 return_var 跟 array 二个参数都存在,则执行 command 之后的状态会填入 return_var 中。
值得注意的是若需要处理使用者输入的资料,而又要防止使用者耍花招破解系统,则可以使用 EscapeShellCmd()。


system
执行外部程式并显示输出资料。
语法: string system(string command, int [return_var]);
传回值: 字串
函式种类: 作业系统与环境

内容说明
本函式就像是 C 语中的函式 system(),用来执行指令,并输出结果。若是 return_var 参数存在,则执行 command 之后的状态会填入 return_var 中。同样值得注意的是若需要处理使用者输入的资料,而又要防止使用者耍花招破解系统,则可以使用 EscapeShellCmd()。若 PHP 以模组式的执行,本函式会在每一行输出后自动更新 Web 伺服器的输出缓冲暂存区。若需要完整的传回字串,且不想经过不必要的其它中间的输出介面,可以使用 PassThru()。


passthru
执行外部程式并不加处理输出资料。
语法: string passthru(string command, int [return_var]);
传回值: 字串
函式种类: 作业系统与环境

内容说明
本函式类似 Exec() 用来执行 command 指令,并输出结果。若是 return_var 参数存在,则执行 command 之后的状态会填入 return_var 中。若输出的资料是二进位的资料,并且需要输出到浏览器中的话,使用本函式就相当合适了。例如使用 pbmplus 工具来执行指令,并传回二进位的图形资料。可以先设定传回资料的标头 (header) 为 Content-type: image/gif,然后呼叫 pbmplus 程式处理图形资料,并将二进位的图形资料直接传回浏览器。
回复

使用道具 举报

发表于 2003-10-7 10:51:56 | 显示全部楼层
确实是个简易的文件管理器,功能不够啊。要的是多人共用的MG
我想可以用个数据库把所有文件都弄个加个ID号,设置那些用户对那些文件可以进行ADD,DELTE操作啊。那个目录可以删除,那个不能.....................
回复

使用道具 举报

 楼主| 发表于 2003-10-7 11:02:55 | 显示全部楼层
一个人用的……
上传主页、论坛用的……
回复

使用道具 举报

发表于 2003-10-7 17:57:11 | 显示全部楼层
1
都是向外部程式寻求解决的办法啊。
真希望5.0后的版本能加个内部的解决办法。
那不是只好去找shell或其他CGI来搞定。
哈哈,偷个懒覆盖操作我还是暂时搁置了。
2
hf_zope的建议真不错啊。
不过感觉就是把inux下的用户系统的模式照搬一个来用,呵呵。
回复

使用道具 举报

 楼主| 发表于 2003-10-7 18:12:47 | 显示全部楼层
其实有了做个多用户的文件管理器的打算。

只是怕技术不过关,所以一直没开始做,只是停留在构思上……
回复

使用道具 举报

发表于 2003-10-7 19:35:34 | 显示全部楼层
1.用Web上传文件比较危险,特别是多用户操作时.很多黑客就是这样做并配合溢出来逐步取得服务器root权限的.所以应该严格限制可执行权限;
2.向外部程式寻求解决的办法不能跨平台操作.
3.权限最丰富的应该是Novel,写权限被拆分为创建、修改、删除,读权限被分解为浏览、打开、复制。作为文件管理器,ftp的权限系统是标准设计;再复杂一些就没有必要了。
回复

使用道具 举报

 楼主| 发表于 2003-10-8 16:46:01 | 显示全部楼层

写权限被拆分为创建、修改、删除,读权限被分解为浏览、打开、复制??????!!!!!!
我的天~~~
回复

使用道具 举报

 楼主| 发表于 2003-10-19 14:11:03 | 显示全部楼层
0.06
webmgr006.zip - 22.82 KB
档案被下载或检视 123 次


下载 123 次,得到错误报告 0 次………
郁闷…… :neutral:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 09:19 , Processed in 0.060549 second(s), 14 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表