Jörg Reinholz: [PHP] Problem mit auflisten von Unterordnern

Beitrag lesen

Moin!

Das ganze mach ich auch nur, weil auf meine Seite massive At­ta­cke statt finden.

Ah. Das erklärt die Panik, die aus dem Code ersichtlich wurde. Aber es stellt sich die Frage, warum Du Die Datei dann nicht automatisch anlegst (Code unten).

Jörg Reinholz

<?php
# Dein Code ist nicht gut aufgeräumt, ich habe das mal geändert.
$myfolder = '/var/www'; # Hier statisch, weil in der Konsole getestet.

# So wie Du das anfängst brauchst Du eine globale Variable für den Array:
$GLOBALS['folder_array']=array(); 
list_folder($myfolder);
asort($GLOBALS['folder_array']);
foreach($GLOBALS['folder_array'] AS $folder){
  echo $folder."<br>\n";
  if (! (
          is_file($folder.'/index.php') 
          || is_file($folder.'/index.html') 
          || is_file($folder.'/index.pl')
      )
  ) {
      if ( touch ($folder.'/index.html') ) {
        chmod ($folder.'/index.html', 0644)
        echo "Verzeichnis hatte keine index-Datei, wurde angelegt.<br>\n";
      } else {
        echo "Verzeichnis hatte keine index-Datei, Anlegen ging auch nicht.<br>\n";      
      }
  }
}  
exit; # "Deklaratorisch", damit der Progger weiß, hier ist das Hauptprogramm zu Ende


function list_folder($path){
  if( $handle = @opendir($path) ) { 
  #Hinweis 
  #@ ist "böse", Du bekommst nicht mit, wenn ein Verzeichnis nicht lesbar ist
    while (false !== ($file = readdir($handle))){
      if ($file != "." && $file != ".." && is_dir($path."/".$file) ) {
        $GLOBALS['folder_array'][] = $path.'/'.$file;
        list_folder($path.'/'.$file); # das hier nennt sich "rekursiver Funktionsaufruf"
      }
    }
  closedir($handle);
  }
}
?>