在对网站进行管理和维护的过程中,经常会修改文件夹的名称,这也是目录的一项基本操作。本例将介绍更新目录名称的方法,单击当前目录中文件夹后的“重命名”超链接,将进入表单修改页面,在这个页面中完成对指定目录的重命名操作,运行结果如图11.19所示。
命名前 重命名目录 命名后
图11.19 重命名目录
【操作步骤】
第1步,创建index.php,输出当前目录的文件和目录信息,并且为输出的目录创建“重命名”超链接,其传递的参数是指定目录的存储位置和当前目录的位置。
<p>当前目录:<?php echo getcwd (); ?></p><p><hr>
<?php $lookdir = getcwd (); //获得当前脚本目录 $i = 0; if (is_dir ( $lookdir )) { //检测是否是合法目录 if ($opendir = opendir ( $lookdir )) { //打开目录 while ( $li = readdir ( $opendir ) ) { //读取目录 $i ++; echo " $i: " . iconv ( "gb2312", "utf-8", $li ); if ($li == "." || $li == "..") { echo "<br>"; } elseif (filetype ( $li ) == "file") { echo "<br>"; } else { $cata=getcwd()."\".iconv ( "gb2312", "utf-8", $li ); $a = urlencode($cata); $b = urlencode(getcwd()); echo " <a href='rename.php?catalog=$a&dir_name=$b' title='更新目录名称' target='_blank'>重命名</a><br>"; } } } } //输出目录中的内容 ?>
第2步,创建rename.php文件,根据超链接传递的参数值创建form表单,完成目录的重新命名提交,并且在rename.php文件中完成重命名的操作。
<form action="rename.php" method="post" enctype="multipart/form-data" name="form1"> <p>原目录名称:<input name="old_name" type="text" id="old_name" value="<?php echo $_GET['catalog'];?>" size="40"></p> <p>新目录名称:<input name="new_name" type="text" id="new_name" size="40" value="<?php echo $_GET['dir_name'];?>"></p> <p><input type="submit" name="Submit" value="提交"></p> </form>
<?php if (isset($_POST['Submit']) && $_POST['Submit'] == "提交") { $old_name=iconv("utf-8","gb2312",$_POST['old_name']); $new_name=iconv("utf-8","gb2312",$_POST['new_name']); if (file_exists ( $old_name )) { if (rename ( $old_name, $new_name )) { //把原文件重新命名 echo "<script>alert('目录重命名成功!'); window.location.href='index.php';</script>"; }else{ echo "<script>alert('目录重命名失败!'); window.location.href='rename.php';</script>"; } } else { echo "<script>alert('目录不存在!'); window.location.href='index.php';</script>"; } } ?>
目录的重命名应用的是rename()函数,语法如下所示:
bool rename ( string $oldname , string $newname [, resource $context ] )
参数说明如下:
- oldname:原来名称。
- newname:新的名字。
- context:有关上下文。
成功时返回TRUE,在失败时返回 FALSE。
在通过超链接的参数向下一个页面中传递值时,最佳的方法就是应用urlencodeO函数对参数值进行编码,其最大的优点是可以避免传递中文字符串或者空格时出现乱码,同时还隐藏了传递的参数值,有一定的保护作用。