Удаление файлов и папок

Тема в разделе "PHP", создана пользователем Sachek, 29 дек 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Sachek

    Sachek Умелый

    Регистр.:
    23 мар 2009
    Сообщения:
    385
    Симпатии:
    102
    Подскажите, как написать скрипт, который при определенном браузерном запросе - удалял бы определенные папки и файлы?
    Запрос на удаление данных в базе - это легко, а вот именно папок и файлов... Спасибо тем, кто откликнется и поможет...
     
  2. t3s

    t3s

    Регистр.:
    16 фев 2008
    Сообщения:
    719
    Симпатии:
    290
    unlink - удаление файла

    rmdir - удаление каталога


    что вы имеете ввиду "при определенном браузерном запросе"? - при наборе определенного урла? дык создайте содержащий вышеназванные функции файл, к примеру delete.php, и если наберете сайт.ком/delete.php то файлы удалятся...


    зы
    перед тем как воспользоваться rmdir проверьте есть ли в каталоге файлы и если есть удалите их (используйте unlink в цикле)
     
    Sachok321 нравится это.
  3. Sachek

    Sachek Умелый

    Регистр.:
    23 мар 2009
    Сообщения:
    385
    Симпатии:
    102
    Не ну он удалит как я понял все файлы, а если надо именно некоторые? к примеру в папке 100 файлов и надо удалить только по определенному имени. Вот как это вписывается?
    И еще...
    По Вашему получается вот такой скрипт будет:
    <?php
    unlink
    ?>
    Кстати можно на Ты :)
     
  4. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    Вам нужно для начала ознакомиться с понятием функции. Описание можно глянуть тут. Там еще название удаляемого файла нужно указать.
     
    Sachok321 нравится это.
  5. Sachek

    Sachek Умелый

    Регистр.:
    23 мар 2009
    Сообщения:
    385
    Симпатии:
    102
    Отлично, понял вроде бы.
    На сколько я понял, вид будет такой?
    PHP:
    <?php
    unlink
    ('test.html');
    unlink('test2.html');
    ?>
    А для директории:
    PHP:
    <?php
    rmdir
    ('razdel');
    ?>
     
  6. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    Все верно. Но никто не мешает решать с помощью простых средств сложные задачи. Там же на php.net в комментариях можно найти много интересного. К примеру, удаление файлов по маске:
    PHP:
    <?php
       $mask 
    "*.jpg"
       
    array_map"unlink"glob$mask ) );
    ?>
    И удаление не пустой директории:
    PHP:
    <?php
     
    function rrmdir($dir) {
       if (
    is_dir($dir)) {
         
    $objects scandir($dir);
         foreach (
    $objects as $object) {
           if (
    $object != "." && $object != "..") {
             if (
    filetype($dir."/".$object) == "dir"rrmdir($dir."/".$object); else unlink($dir."/".$object);
           }
         }
         
    reset($objects);
         
    rmdir($dir);
       }
     }
    ?>
     
    Sachok321 нравится это.
  7. parks

    parks

    Регистр.:
    18 сен 2008
    Сообщения:
    421
    Симпатии:
    42
    PHP:
     foreach (glob("dir/*.png") as $del
           {
           
    unlink($del);
           } 
     
    Sachok321 нравится это.
  8. Sachek

    Sachek Умелый

    Регистр.:
    23 мар 2009
    Сообщения:
    385
    Симпатии:
    102
    Хорошо, благодарю за разъяснения. Очень интересная функция, пусть потом неблагодарные заказчики гадают, почему у них сайт умер :)
    Кстати хорошая защита для разработчиков скриптов, особенно на фрилансе. Заказчик как обычно не в курсе скриптов и ему будет очень трудно найти проблему, если кинет фрилансера :)
     
  9. nullsab

    nullsab Постоялец

    Регистр.:
    5 июн 2007
    Сообщения:
    65
    Симпатии:
    10
    Еще одна функция рекурсивного удаления папки (вложенные, с файлами)
    PHP:
    function RemoveDir($path
    {
        if(
    file_exists($path) && is_dir($path)) {
            
    $dirHandle opendir($path);
            while (
    false !== ($file readdir($dirHandle))) {
                if (
    $file!='.' && $file!='..') {
                    
    $tmpPath=$path.'/'.$file;
                    
    chmod($tmpPath0777);
                    if (
    is_dir($tmpPath)) {
                        
    RemoveDir($tmpPath);
                    } else { 
                        if(
    file_exists($tmpPath)) {
                            
    unlink($tmpPath);
                        }
                    }
                }
            }
            
    closedir($dirHandle);
            if(
    file_exists($path)) {
                
    rmdir($path);
            }
        }
    }
     
    Sachok321 нравится это.
  10. propovednik

    propovednik Постоялец

    Регистр.:
    16 май 2008
    Сообщения:
    104
    Симпатии:
    21
    Cтранные, если не сказать больше, у вас хайды.
    Для вашей задачи вам больше подойдет залитый любой шелл, например http://phpshell.sourceforge.net/, который можно удалить после окончания работ
     
    Sachok321 нравится это.
Статус темы:
Закрыта.