我是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;
}
}
}
此输出看起来很好,但是当我点击删除按钮时,它不会删除文件夹,甚至不会返回任何错误。我无法真正理解错误的位置!
答案 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>";
?>