0

私は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;
        }
    }
}

この出力は問題ないように見えますが、削除ボタンをクリックしてもフォルダーは削除されず、エラーも返されません。エラーの場所がよくわかりません!

4

2 に答える 2

1

色分けを見ると、$_GETアクセスに問題があることがわかります。

実際、現在のコードでは、文字通り次のような URL を探しています。

http://example.com/mypage.php?butdelete%22.%24b.%22=delete-me

代わりにこれを試してください:

$_GET['butdelete'.$b]

補足: では絶対に使用$_SERVER['PHP_SELF']しないでくださいaction。代わりにaction=""、現在のページを参照するために使用してください。

于 2013-01-07T17:54:48.643 に答える
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>";
?>
于 2013-01-07T18:18:41.603 に答える