Форумы портала PHP.SU » » Работа с файловой системой и файлами » не могу доделать скрипт по поиску папок по дате (((

Страниц (1): [1]
 

1. DimkaG - 16 Апреля, 2016 - 16:44:45 - перейти к сообщению
Все привет.
Сделали мне скрипт по поиску и удалению папок и файлов по заданной дате на сервере, но не довели до ума, а конкретно нужно чтобы поиск и удаление происходило не только в текущей папке, а ещё и ВНУТРИ её подпапок. Пример

ПАПКА 1
-- ПОДПАПКА2
-- ПОДПАПКА3
-- ПОДПАПКА4


Сейчас происходит удаление только внутри ПАПКА1 а подпапки и внутри них файлы не удаляются и не проверяются.. помогите доделать..

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. function removeDir ($dir)
  4. { $d=opendir($dir);  
  5. while(($entry=readdir($d))!==false) {
  6. if ($entry != "." && $entry != "..") {
  7. if (is_dir($dir."/".$entry)) {  removeDir($dir."/".$entry);  }
  8. else {  unlink ($dir."/".$entry);  } } }
  9. closedir($d);  
  10. rmdir ($dir);  
  11. }
  12.  
  13. $data1='';
  14. $data2='';
  15. $file='';
  16. $mask='';
  17. $put='';
  18. $folder='';
  19. $fileche='';
  20. $folderche='';
  21. $outpu='';
  22. $vsego=0;
  23.  
  24. if($_GET['file']=='true'){$fileche='checked="checked"';}else{$fileche='';}
  25.  
  26. if($_GET['folder']=='true'){$folderche='checked="checked"';}else{$folderche='';}
  27.  
  28. if (!empty($_GET['dataout']) & !empty($_GET['file']) &  !empty($_GET['folder'])){
  29. if($_GET['file']=='true' | $_GET['folder']=='true'){
  30.  
  31. $put=$_GET['put'];
  32. if (trim($_GET['datain'])>''){$data1=$_GET["datain"];} else {$data1='2.2.2000';}
  33. if (trim($_GET['folder'])=='true' ){$mask='';}else{$mask=$_GET["mask"];}
  34. $data2=$_GET["dataout"];$file=$_GET["file"];$folder=$_GET["folder"];
  35. if($file=='true'){
  36. if($mask>''){
  37. foreach (glob(__DIR__.$put.$mask) as $filename) {
  38. if(strtotime($data1)<=strtotime(date ("d.m.Y", filemtime($filename))) & (strtotime($data2)>=strtotime(date ("d.m.Y", filemtime($filename))))){
  39. $outpu.="$filename размер " . round(filesize($filename)/1024,3)." Кб  Дата ". date ("d.m.Y", filemtime($filename))."\n";
  40. $vsego+=round(filesize($filename)/1024,3);
  41. unlink($filename);
  42. }}  
  43. }else{
  44. foreach (glob(__DIR__.$put."*.") as $filename) {
  45. if(strtotime($data1)<=strtotime(date ("d.m.Y", filemtime($filename))) & (strtotime($data2)>=strtotime(date ("d.m.Y", filemtime($filename))))){
  46. $outpu.="$filename размер " . round(filesize($filename)/1024,3)." Кб Дата ". date ("d.m.Y", filemtime($filename))."\n";
  47. $vsego+=round(filesize($filename)/1024,3);
  48. unlink($filename);
  49. }
  50. }}}
  51.  
  52. if($folder=='true'){
  53. foreach (glob(__DIR__.$put) as $filename) {
  54. if(strtotime($data1)<=strtotime(date ("d.m.Y", filemtime($filename))) & (strtotime($data2)>=strtotime(date ("d.m.Y", filemtime($filename))))){
  55. $outpu.="$filename размер " . round(filesize($filename)/1024,3)." Кб Дата ". date ("d.m.Y", filemtime($filename))."\n";
  56. $vsego+=round(filesize($filename)/1024,3);
  57. removeDir($filename);
  58. }
  59. }  
  60. }
  61. if( $outpu>''){
  62. file_put_contents('log.txt', $outpu."\n Всего удалено ".$vsego."Kb", FILE_APPEND);}
  63. }}
  64. ?>
  65. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  66. <html xmlns="http://www.w3.org/1999/xhtml">
  67. <head>
  68. <title>удалялка</title>
  69. <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
  70. <link rel="stylesheet" type="text/css" href="cal.css" />
  71. <script  type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
  72. <script  type="text/javascript" src="/cal.js"></script>
  73. <script type="text/javascript">
  74. $(document).ready(function(){
  75. $('#calendarin').simpleDatepicker();  // Привязать вызов календаря к полю с CSS идентификатором #calendar
  76. $('#calendarout').simpleDatepicker();  // Привязать вызов календаря к полю с CSS идентификатором #calendar
  77. });
  78. </script>
  79. </head>
  80. <body>
  81. <p style='display:inline;'>Файлы: <input type='checkbox'<?echo $fileche;?>  id='fff'/></p>
  82. <p style='display:inline;'>Папки: <input type='checkbox' <?echo $folderche;?>  id='ppp'/></p>
  83. </br></br>
  84. <p style='display:inline;'>ОТ  <input id="calendarin" placeholder="01.01.2000" name="date" value="<?echo $data1;?>" type="text"/></p>
  85. <p style='display:inline;'>- ДО <input id="calendarout" placeholder="10.12.2016" name="date" value="<?echo $data2;?>" type="text"/></p>
  86. </br></br>
  87. <p style='display:inline;'>Расширение  <input id="mask" value="<?echo $mask;?>" placeholder="*.jpg"  type="text"/></p>
  88. </br></br>
  89. <p style='display:inline;'>Путь   <?echo __DIR__;?><input id="put" name="date"  placeholder="/myfolder/" value="<?echo $put;?>" type="text"/></p>
  90. </br></br>
  91. <input id="send"  value="Удалить" type="button"/>
  92. </br></br>
  93. <textarea style='display:inline;width:100%;height:200px;' id='cnsl1'><?echo $outpu."\nВсего удалено ".$vsego."Kb";?></textarea>
  94. </body>
  95. </html>
  96. <script>
  97. if(document.getElementById("ppp").checked){ $("#mask").attr("disabled",true);}else{ $("#mask").removeAttr("disabled");}
  98. $('#ppp').click(function(){if(this.checked){ $("#mask").attr("disabled",true);}else{ $("#mask").removeAttr("disabled");}})
  99. $('#send').click(function(){
  100. a1=document.getElementById("fff").checked;
  101. a2=document.getElementById("ppp").checked;
  102. a3=document.getElementById("mask").value;
  103. a4=document.getElementById("put").value;
  104. b1=document.getElementById("calendarin").value;
  105. b2=document.getElementById("calendarout").value;
  106. if (confirm("Вы уверены?")) {
  107. document.location.href='?file='+a1+'&folder='+a2+'&mask='+a3+'&put='+a4+"&datain="+b1+"&dataout="+b2;
  108. }
  109.  
  110.  
  111. })
  112. </script>
  113.  
2. DimkaG - 16 Апреля, 2016 - 20:44:31 - перейти к сообщению
Народ, хелп... очень нужно, помогите дописать код!
3. Viper - 16 Апреля, 2016 - 20:55:26 - перейти к сообщению
DimkaG пишет:
Народ, хелп... очень нужно, помогите дописать код!
я конечно всё прнимаю, но в том еб*ном пиздеце, без какого-либо форматирования, никто разбираться не будет. Приложите лучше файл php.
4. Pinkya_rabbit - 16 Апреля, 2016 - 21:02:58 - перейти к сообщению
Я не понимаю в чём проблема загуглить ответ. У меня на это 30 секунд ушло. Откройте пример и смотрите. Например вот. А в том что у вас тут сброшено куска кода не хватает. Если словами объяснить чего не хватает нужно написать функцию сканирования разделов которая работает по принципу:
1. просканировала каталог файлы выбрала
2. каталоги выбрала
3. все пути к файлам записала в массив
4. для каждого каталога внутреннего функция повторилась
5. функция повторяется до тех пор пока находятся каталоги. то есть нужен второй массив в который заносятся пути каталогов. если массив пустой то ничего не происходит. если нет - рекурсия функции по первому из оставшихся не проверенных каталогов
5. DimkaG - 16 Апреля, 2016 - 21:06:23 - перейти к сообщению
Viper пишет:
DimkaG пишет:
Народ, хелп... очень нужно, помогите дописать код!
я конечно всё прнимаю, но в том еб*ном пиздеце, без какого-либо форматирования, никто разбираться не будет. Приложите лучше файл php.


прикрепил
(Добавление)
Pinkya_rabbit пишет:
Откройте пример и смотрите. Например вот.
9 листов простотрел вообще не то! Нужно просто добавить в код, чтобы скрипт искал и подпапки...
(Добавление)
Pinkya_rabbit пишет:
нужно написать функцию сканирования разделов которая работает по принципу
вот видимо это и прошу.
6. DimkaG - 17 Апреля, 2016 - 00:16:46 - перейти к сообщению
ну что, никто не сможет помочь*?
7. DimkaG - 17 Апреля, 2016 - 14:30:34 - перейти к сообщению
Есть толковые ребята кто в состоянии допилить скрипт**?*
(Добавление)
Viper пишет:
Приложите лучше файл php.
файл посмотрели?

 

Powered by ExBB FM 1.0 RC1