重命名目录

课后整理 2021-1-12

在对网站进行管理和维护的过程中,经常会修改文件夹的名称,这也是目录的一项基本操作。本例将介绍更新目录名称的方法,单击当前目录中文件夹后的“重命名”超链接,将进入表单修改页面,在这个页面中完成对指定目录的重命名操作,运行结果如图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 ] )

参数说明如下:

成功时返回TRUE,在失败时返回 FALSE。

在通过超链接的参数向下一个页面中传递值时,最佳的方法就是应用urlencodeO函数对参数值进行编码,其最大的优点是可以避免传递中文字符串或者空格时出现乱码,同时还隐藏了传递的参数值,有一定的保护作用。