За последние 24 часа нас посетили 18252 программиста и 1633 робота. Сейчас ищут 1637 программистов ...

Удаление поддирректории сайта по дате

Тема в разделе "PHP для новичков", создана пользователем Димон, 17 апр 2011.

  1. Димон

    Димон Активный пользователь

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Всем доброго времени суток.
    У меня есть вопрос: возможно ли удалить одну из папок сайта после определенного числа.
    Т.Е. есть главная страница "index.php", расположенной в папке WWW. В этой же папке находится папка "office", в которой расположен защищенный раздел сайта.
    Как удалить данный раздел по дате, например если дата будет равна 1.09.2011 или позднее (т.е. после 1.09.2011)
    Одним словом, при входе на страницу "index.php", надо сравнить дату и если дата равна или превышает заданное число - удалить раздел "office".
    Как правильно это сделать средствами РНР, или надо это сделать с помощью JS?
     
  2. Shumomer

    Shumomer Активный пользователь

    С нами с:
    12 мар 2011
    Сообщения:
    194
    Симпатии:
    1
    Адрес:
    из вашего вображения
  3. Димон

    Димон Активный пользователь

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Shumomer
    Спасибо огромное! Оказывается ТАК ПРОСТО!!!
     
  4. Димон

    Димон Активный пользователь

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Попробовал - не работает. Помещаю строку на стриницу index, и просто вместо страницы грузится делое поле (чистый лист), не взирая на дату, устанавливаемую в скрипте.
    Почему так?
     
  5. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    потому что у вас скорее всего не поддерживается rmdirx. она не нативная - это расширение
    PHP:
    1. <?php
    2. function rmdirx($dir){
    3.   $list=glob($dir.'*',GLOB_MARK);
    4.   foreach($list as $item){
    5.     if(is_dir($item)){
    6.       rmdirx($item);
    7.     }else unlink($item);
    8.   }
    9.   if(is_dir($dir)) rmdir($dir);
    10. }
    11. ?>
     
  6. Димон

    Димон Активный пользователь

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    titch
    А как правильно установить данное расширение?
     
  7. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    в код скопировать функцию, которую я дал =)
     
  8. Димон

    Димон Активный пользователь

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    titch
    Все равно не работает. Команда rmdirx не распознается как команда (т.е. Адобе не окрашивает команду в синий цвет, а пишет в черном цвете), так же и в строке if(date('Y-m-d'>='2011-09-01') rmdirx('office'); происходит тоже самое, мало того Адобе пишет что в данной строке есть ошибка синтаксиса.
     
  9. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    omg... я не знаю, как отвечать на такое вопросы, сорри
     
  10. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    if(date('Y-m-d')>='2011-09-01') rmdirx('office');

    а потом то что titch написал
     
  11. Димон

    Димон Активный пользователь

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    tommyangelo
    Попробовал и так. Сейчас страница грузится, но и каталог "office" никуда не делся (я переставил в коде месяц на апрель)

    Попробовал вместо "office" задавать полный путь к папке. Тогда все повторяется - перестает грузиться страница в основном каталоге. Что я делаю не так?
     
  12. Димон

    Димон Активный пользователь

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Спасибо огромное Shumomer, titch и
    tommyangelo. Главное, что я понял - каким образом можно удалить каталог (не пустой), хоть и с помощью другой функции, но смысл тот же:

    Код (Text):
    1.  
    2. <? if(date('Y-m-d')>='2011-09-01') rmdir_recursive('office');?>
    3. <?php  function rmdir_recursive($dir) {
    4. $files = scandir($dir);
    5. array_shift($files); // remove '.' from array
    6. array_shift($files); // remove '..' from array
    7. foreach ($files as $file) {
    8. $file = $dir . '/' . $file;
    9. if (is_dir($file)) {
    10. rmdir_recursive($file);
    11. if (is_dir($file))
    12. rmdir($file);
    13. } else {
    14. unlink($file);
    15. }
    16. }
    17. rmdir($dir);
    18. }
    19.   ?>
    Эта реально работает. Тему можно закрыть.[/code]