php代码显示文件夹列表和每个文件夹附近的删除按钮

时间:2013-01-07 17:52:39

标签: php

我是php的初学者,需要编写一个代码,显示文件夹列表和每个文件夹附近的删除按钮,以便能够取消它们。 这是我的代码:($ array_dir是一个包含当前文件夹中目录名称的数组)

$conto=count($array_dir);
echo"<table>";

for ($b=0;$b<$conto;$b++) {
    echo"<tr><td><a href=$array_dir[$b]>".$array_dir[$b].
    "</a><br>";
    echo"<form name='delete_dir_".$b."' action=
    '".$_SERVER['PHP_SELF']."' method='GET'>";
    echo"<input type='submit' name='butdelete".$b."' value='Delete'>";
    echo"</form></td><td>";
    $dir=$array_dir[$b];
    if ((isset($_GET['butdelete".$b."'])) && ($_GET['butdelete".$b."']==$dir)) {
        if(rmdir($dir)) {
            echo"The directory ".$dir." has been removed";
        }
        else  {
            echo"Could not remove directory ".$dir;
        }
    }
}

此输出看起来很好,但是当我点击删除按钮时,它不会删除文件夹,甚至不会返回任何错误。我无法真正理解错误的位置!

2 个答案:

答案 0 :(得分:1)

查看颜色编码,您会发现$_GET访问权限存在问题。

事实上,就像你现在的代码一样,你实际上正在寻找一个像:

这样的网址
http://example.com/mypage.php?butdelete%22.%24b.%22=delete-me

请改为尝试:

$_GET['butdelete'.$b]

旁注:永远不要在$_SERVER['PHP_SELF']中使用action。相反,只需使用action=""来引用当前页面。

答案 1 :(得分:0)

您的语法错误会导致问题。我已修复并将文件操作移到脚本顶部,这样您在执行删除时列出的是最新的。

<?php 

//If form has been posted try and delete if dir exists in array
if((isset($_GET['butdelete'.$b])) && (array_search($_GET['butdelete'.$b], $array_dir)))
{
    $dir = array_dir[array_search($_GET['butdelete'.$b], $array_dir)];
    if(rmdir($dir))
    {
        echo "The directory ".$dir." has been removed";
        //Remove Dir from Array if deleted.
        unset($array_dir[array_search($_GET['butdelete'.$b], $array_dir)]);
    }
    else
    {
        echo "Could not remove directory ".$dir;
    }
}

$conto=count($array_dir);

//Output remaining directories

echo"<table>";
for($b=0;$b<$conto;$b++){
   echo"<tr><td><a href=$array_dir[$b]>".$array_dir[$b]."</a><br>";
   echo"<form name='delete_dir_".$b."' action='' method='GET'>";
   echo"<input type='submit' name='butdelete".$b."' value='Delete'>";
   echo"</form></td><td>";
}
echo "</table>";
?>