-1

私はphpの初心者で、データベースにあるユーザーに関するデータを含むテーブルを表示するコードを作成しました。これは私が使用したコードです。 名前 苗字 生年月日 生年月日 市区 町村 コード 住所 電子メール ";

while($row=mysql_fetch_array($result))

{echo"<tr>";
echo"<td>" . $row['Name'] . "</td>";
echo"<td>" . $row['Surname'] . "</td>";
echo"<td>" . $row['DateofBirth'] . "</td>";
echo"<td>" . $row['TownofBirth'] . "</td>";
echo"<td>" . $row['Code'] . "</td>";
echo"<td>" . $row['Address'] . "</td>";
echo"<td>" . $row['Email'] . "</td>";
echo'<td><a href="delete.php?id='.$row['Code'].'">Delete</a></td>';
echo"</tr>";
}
echo"</table>";
?>

「削除」リンクをクリックしてデータベースからユーザーを削除できるdelete.phpファイルも作成しましたが、このコードで、現在の場所にあるユーザーのユーザー名で名前が付けられたフォルダーを削除することも必要でした作業ディレクトリ。これは私が書いたコードです:

<?php
$con=mysql_connect("localhost","root","mypassword");
mysql_select_db("mydb",$con);
function deletedir($dirname){
    if(file_exists($dirname) && is_file($dirname)) {
        unlink($dirname);
    } elseif(is_dir($dirname)) {
        $handle=opendir($dirname);
        while(false!==($file=readdir($handle))){
            if(is_file($dirname.$file)){
                unlink($dirname.$file);
            }
        }
        $handle=closedir($handle);
        rmdir($dirname);
    }
}

if (isset($_GET['id'])) {
    $id=$_GET['id'];
    $sql=mysql_query("SELECT Username FROM Users WHERE Code='$id'");
    while($row=mysql_fetch_array($sql)) {
        $username=$row['Username'];
        deletedir($username);
    }

    $result=mysql_query("DELETE FROM Users WHERE Code='$id'") or die(mysql_error());
    header("location: index.php");
} else {
    header("location: index.php");
}

?> 

このコードはデータベースからユーザーを削除しますが、$username というフォルダーは削除しません。エラーがどこにあるかを理解するのを手伝ってください。前もって感謝します。

4

1 に答える 1

0

これがあなたの問題だと思います:

unlink削除スクリプトが削除しようとrmdirしているディレクトリと同じディレクトリにない場合は、削除するファイル/ディレクトリへのフルパスが必要です。

次のようなものをdeletedir関数の先頭に追加してみてください:

$dir = "/opt/www/userdirs"
$dirname = $dir . '/' . $dirname;

「/opt/www/userdirs」を、削除するディレクトリが存在するディレクトリに変更します。

また、これらすべてを変更する必要があると思います。

$dirname.$file

に:

$dirname . '/' . $file
于 2013-01-12T22:24:52.117 に答える