سؤال

التعليمة البرمجية التالية تحذف الملفات الموجودة في مجلد uploads.كيف يمكنني حذف المجلد أيضًا عندما ينقر المستخدم Delete Folder (أو مشابه).

حاولت استخدام rmdir لكنني لا أتلقى أخطاء في ملف move.php الفارغ فقط.

ما هي الطريقة الصحيحة/الموصى بها للقيام بذلك؟من فضلك النصيحة.

    <?php
    $actfolder = $_REQUEST['folder'];
    require_once("models/config.php");

    if(!securePage($_SERVER['PHP_SELF'])){
        die();
    }
    require("models/db-settings.php");

    if(isset($_GET['file'])){
        $filename = "uploads/$loggedInUser->username$actfolder/" . ltrim($_GET['file'], '/\\');
        // make sure only deleting a file in files/ directory
        if (dirname(realpath($filename)) == realpath("uploads/$loggedInUser->username$actfolder/")) {
            unlink($filename);
        }
    }
    header("Location:".$_SERVER["HTTP_REFERER"]);
?>
هل كانت مفيدة؟

المحلول

فقط جرب شيئًا مثل هذا:

$filename = "uploads/$loggedInUser->username$actfolder/";
if (is_dir($filename) === true)
    {
        $files = array_diff(scandir($filename), array('.', '..'));

        foreach ($files as $file)
        {
           unlink(realpath($filename) . '/' . $file);
        }

        rmdir($filename);  //remove directory
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top