频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

6.3.1 我的文件管理器

作者: 王石/杨英娜 出处:人民邮电出版社  2008-05-13 10:50    砖    好    评论   进入论坛
阅读提示:《精通PHP+MySQL应用开发》第6章将要讲述的是PHP的文件系统,本节为您介绍的是我的文件管理器,以及示意图。

6.3  综合示例

上面两节介绍了文件系统中文件及目录的操作,本节将给出一个示例,使读者熟悉两者的使用。示例的目的是实现一个简单的文件浏览器,在浏览器中给出一个目录下所有的文件列表;对于.html、.php和.txt文件,能通过单击动作直接在浏览器中查看内容。

6.3.1  我的文件管理器

文件管理器最后的效果,如图6.1所示。对于管理器中的目录:当用户单击“.”时,当前目录不变;当单击上级目录链接“..”,页面则会显示上级目录的内容;当单击下级目录,如图中的“dev”目录时,页面会转到相应的目录。

当用户单击.txt文件的链接时,页面会以HTML形式显示其内容;当单击.php文件的链接时,页面则会执行其脚本文件;对于其他类型的文件,本示例只给出文件名,不能查看其内容,当然,这很容易扩充。

 
图6.1  我的文件管理器
图6.1所示的文件管理器实现代码如下。
1    <!--文件管理器:file_viwer.php---------------------------->
2    <html>
3        <head>
4             <title>我的文件管理器</title>
5        </head>
6        <body>
7             <center><h3>我的文件管理器</h3></center>
8             <table border=1 width=100%>
9                 <tr align=center bgcolor=yellow>
10                     <th>文件名</th>
11                     <th>大小</th>
12                     <th>创建时间</th>
13                     <th>最后修改时间</th>
14                 </tr>
15   <?php
16        //获取用户单击页面上的目录链接生成的新的目录信息
17        if(!isset($_GET[currentdir])||empty($_GET[currentdir])) 
$dir=getcwd();
18        else $dir= $_GET[currentdir];
19        //改变目录
20        chdir($dir);
21        echo "当前目录:".getcwd()."<br>";
22        //打开目录
23        $dh=opendir($dir);   
24        //循环读取目录中的目录及文件
25        while ($item = readdir($dh)) {
26             echo "<tr><td>";
27             //如果是目录
28             if(is_dir($item)){   
29                  //对当前目录
30                  if($item=="."){
31                       $currentdir=getcwd();
32                    echo "<a href=$PHP_SELF?currentdir=$currentdir>.</a>";
33                }
34                //对上一级目录
35                elseif($item=="..")    {
36                    $currentdir=getcwd()."\\..";
37                    echo "<a href=$PHP_SELF?currentdir=$currentdir>..</a>";
38                }
39                //对子目录
40                else{
41                    $currentdir=getcwd()."\\$item";
42                    echo "<a href=$PHP_SELF?currentdir=$currentdir>$item</a>";
43                }
44            }
45            //如果是文件
46            else{
47                //截取文件后缀
48                $extname=substr($item,strrpos($item,"."));
49                //显示txt和php文件的链接信息,通过链接可以打开文件
50                if(strtoupper($extname)==".PHP" || strtoupper($extname)==".TXT"){
51                    $currentdir=getcwd();
52        echo "<a href=./show_file.php?currentdir=$currentdir&filename= $item&type=
$extname>$item</a>";
53                }
54                //对于其他类型的文件,只给出文件名
55                else{
56                    echo "$item";
57                }
58            }
59            //显示文件或目录的其他信息
60            //文件类型和大小
61            if(is_dir($item)) $file_size="目录";
62            else $file_size=round(filesize($item)/1024)."K";
63            echo "<td>$file_size</td>";   
64            //文件创建时间
65            $create_date=date("y-m-d h:i:sA",filectime($item));
66            echo "<td>$create_date</td>";
67            //文件最后修改时间
68            $update_date=date("y-m-d h:i:sA",filemtime($item));
69            echo "<td>$update_date</td>";
70        }//while
71        closedir($dh);                            //关闭目录
72    ?>
73            </table>   
74        </body>
75    </html>

示例在第25行使用readdir()循环读取当前目录中的目录和文件。
对于目录,使用变量$currentdir获取当前的路径信息。

当用户单击“.”时,$currentdir为当前目录不变,即$currentdir= getcwd();
当用户单击“..”时,$currentdir为当前目录的上级目录,即$currentdir= getcwd()+"\\.."(Windows平台);
当用户单击其他目录时,$currentdir为相应目录,即$currentdir= getcwd()+目录名(Windows平台)。

获取用户提交的目录信息后,使用GET方式传递给文件自身脚本,页面在第17、18行使用$_GET获取$currentdir,然后在第20行改变当前目录。对于文件,则判断其后缀是否为“.php”或“txt”,若是,在第52行给出查看其内容的链接;否则,只输出文件名。

最后在第59~69行,示例分别使用filesize()、filoectime()和filemtime()获取文件和目录大小、创建时间、最后修改时间,并输出。

【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节
专题
汶川大地震 IT技术人为同胞生命祈福
全面解析35岁技术人的价值与出路
LAMP技术精解
北漂技术人90天求职纪实
2008年春季英特尔信息技术峰会(IDF)
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
汶川大地震 IT技术人为同胞生命祈福
汶川大地震 IT技术人为同胞生..
访问控制列表(ACL)介绍
访问控制列表(ACL)介绍
视频访谈:网管员如何踏上高薪之路
视频访谈:网管员如何踏上高薪..
· 视频访谈:网管员如何踏..
· 首届中国IT工程师生态..
· 华为路由器配置
· 全面解析35岁技术人的..
· 企业数据恢复指南
· 龙芯要做中国的“奔腾”
· 2008年上半年全国软考..
· 交换机故障解决指南
· Vista SP1对决XP SP3
· LAMP技术精解
· 微软出价446亿美元收购..
· 网络故障排除宝典
· AIX操作系统管理应用(..
· 华为员工自杀频频拷问..
· 三层交换技术专题
· ARP攻击防范与解决方案
ARP攻击防范与解决方案
ARP攻击防范与解决方案
iSCSI应用与发展
iSCSI应用与发展
SQL Server 2008/2005全解
SQL Server 2008/2005全解
· SQL Server 2008/2005..
· SOA 面向服务架构
· SQL Server 2008/2005..
· iSCSI应用与发展
· RAID——磁盘阵列基础
· Apache技术专题
· 三层交换技术专题
· SQL Server入门到精通
· Apache技术专题
· 国际文档格式标准开战
· 路由器设置与口令恢复
· 打造安全服务器
· PHP开发应用手册
· SOA 面向服务架构
· 企业数据恢复指南
· ADSL应用面面俱到
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
iSCSI应用与发展
iSCSI应用与发展
· iSCSI应用与发展
· SQL Server入门到精通
· SQL Server 2008/2005..
· SOA 面向服务架构
· Apache技术专题
· iSCSI应用与发展
· 三层交换技术专题
· Apache技术专题
· 企业数据恢复指南
· RAID——磁盘阵列基础
· 路由器设置与口令恢复
· SOA 面向服务架构
· ADSL应用面面俱到
· ADSL应用面面俱到
· 反垃圾邮件技术应用
· 访问控制列表(ACL)介绍