删除用户帐户和所有文件/目录

时间:2012-03-26 13:56:48

标签: php mysql foreach rmdir

我正在使用php制作内部网客户经理,并将以下内容放在一起以删除客户帐户以及与该帐户关联的目录/文件。我遇到的问题是当你点击删除它正在从MYSQL DB中删除用户就好了,但由于某种原因没有删除目录,更糟糕的是它没有显示任何错误,它只是工作:-S。

    <?php
    $cfid = $_GET['token'];

    mysql_query("DELETE FROM rok5g_chronoforms_data_editcustomer WHERE cf_id = $cfid") or die(mysql_error());

    $dir = '/customer-files/$cfid/';

    //Delete folder function
    function deleteDirectory($dir) {
        if (!file_exists($dir)) return true;
        if (!is_dir($dir) || is_link($dir)) return unlink($dir);
            foreach (scandir($dir) as $item) {
                if ($item == '.' || $item == '..') continue;
                if (!deleteDirectory($dir . "/" . $item)) {
                    chmod($dir . "/" . $item, 0777);
                    if (!deleteDirectory($dir . "/" . $item)) return false;
                };
            }
            return rmdir($dir);
        }


    ?>  

3 个答案:

答案 0 :(得分:3)

这不起作用。

$dir = '/customer-files/$cfid/';

必须是双引号

$dir = "/customer-files/$cfid/";

在此处阅读更多相关信息 - http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single

注意 - 这实际上是假设您在某个时刻调用方法deleteDirectory($dir)

另外,我建议你阅读SQL注入(如果你还没有)。使用当前设置,您的脚本可能会被破坏并且数据库很容易受到损害。

并且,如果不是mysqli,请使用PDO。建议您不要使用旧的mysql库。

答案 1 :(得分:0)

首先检查你是否在php config中打开了错误。

再次检查您的服务器是否有权删除此文件夹及其中的文件。如果由于缺少权限chmod而无法执行rmdir($ dir)($ dir。“/”。$ item,0777);也可能会失败。

答案 2 :(得分:0)

好的,最后我使用以下&gt;&gt;

开始工作
    <?php
    $cfid = $_GET['token'];

    mysql_query("DELETE FROM rok5g_chronoforms_data_editcustomer WHERE cf_id = $cfid") or die(mysql_error());



    define('PATH', "./customer-files/$cfid/");

    function destroy($dir) {
        $mydir = opendir($dir);
        while(false !== ($file = readdir($mydir))) {
            if($file != "." && $file != "..") {
                chmod($dir.$file, 0777);
                if(is_dir($dir.$file)) {
                    chdir('.');
                    destroy($dir.$file.'/');
                    rmdir($dir.$file) or DIE("couldn't delete $dir$file<br />");
                }
                else
                    unlink($dir.$file) or DIE("couldn't delete $dir$file<br />");
            }
        }
        closedir($mydir);
    rmdir("$dir");
    }
    destroy(PATH);
    echo 'all done.';



    ?>