0

我在 php 中创建了一个 Intranet 客户经理,并将以下内容放在一起以删除客户帐户以及与该帐户关联的目录/文件。我遇到的问题是,当您单击删除时,它可以很好地从 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);
        }


    ?>  
4

3 回答 3

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 注入(如果您还没有的话)。您的脚本可能会被破坏,并且使用当前设置很容易损坏数据库。

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

于 2012-03-26T14:00:14.463 回答
0

首先检查您是否在 php 配置中打开了错误显示。

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

于 2012-03-26T14:03:24.150 回答
0

好的,最后我使用以下命令让它工作>>

    <?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.';



    ?>
于 2012-03-26T14:59:17.543 回答