#1 15. Januar 2012 Ordner und Dateien auslesen Als erstes vielen Dank, dass du diesen Thread liest. Mein Problem ist, dass ich mir mit meinem Script alle Dateien und Ordner anzeigen lassen will die in einem Verzeichnis sind, und wenn man auf den Link Klickt soll in das Unterverzeichnis gewechselt werden. Und genau da liegt das Problem, das wenn in das Unterverzeichnis gewechselt werden soll geht das erstens ned, und wenn ich in dem Unterverzeichnis bin werden die Dateien nur Teilweise und die Ordner gar nicht angezeigt. Spoiler PHP: <? php if(!isset( $_GET [ 'pfad' ])) { $handle = opendir ( $_SERVER [ 'DOCUMENT_ROOT' ]); $dir = $_SERVER [ 'DOCUMENT_ROOT' ]; } else { $dir = $_GET [ 'pfad' ]; $handle = opendir ( $dir ); $dir = $_SERVER [ 'DOCUMENT_ROOT' ]. "/" . $_GET [ 'pfad' ]; } $dateien = array(); $verzeichnisse = array(); while( false !== ( $file = readdir ( $handle ))) { if( is_file ( $file )) { $dateien [ $file ] = $file ; } if( is_dir ( $file )) { $verzeichnisse [ $file ] = $file ; } } asort ( $dateien ); asort ( $verzeichnisse ); echo "Dateien: <br>" ; foreach( $dateien as $file ) { echo "<a href='editor.php?pfad= $dir$file '>" . $file . "</a><br>" ; } echo "<hr>Ordner: <br>" ; foreach( $verzeichnisse as $file ) { echo "<a href='test.php?pfad= $dir / $file '>" . $file . "</a><br>" ; } Mit freundlichen Grüßen, YOOUI + Multi-Zitat Zitieren
#2 15. Januar 2012 AW: Ordner und Dateien auslesen wat? vielleicht liegts daran, dass du immer wieder DOCUMENT_ROOT voranstellst: PHP: $dir = $_SERVER [ 'DOCUMENT_ROOT' ]. "/" . $_GET [ 'pfad' ]; // <-- zonk! zudem ist es möglich mit dem script den kompletten server aufzulisten. PHP: $dir = $_GET [ 'pfad' ]; // ../../../../home/pr0n $handle = opendir ( $dir ); // dä dä dääämmmm! PHP: $dir = realpath ( $_GET [ 'pfad' ]); $root = $_SERVER [ 'DOCUMENT_ROOT' ];if (! $dir || substr ( $dir , 0 , strlen ( $root )) !== $root ) exit( "nope" ); $handle = opendir ( $dir ); + Multi-Zitat Zitieren
#3 15. Januar 2012 AW: Ordner und Dateien auslesen Hi Murdoc, sorry war ein bischen zu schnell geschreiben. Das Ziel von dem Script soll sein einem Anderen Script (editor.php) einen Dateipfad zu übergeben, durch den der Editor die Datei einlädt --> Auf der ersten Seite (also in keinem Unterverzeichnis) funktioniert das auch einwandfrei doch in den Unterverzeichnissen funktioniert gar nihcts mehr. Mit freundlichen Grüßen, YOOUI ----- @Murdoc Leider verstehe ich deinen Gedankengang ned... Hab zwar jetzt die if...else Schleife durch deinen Code: ersetzt. Aber es hat sich GAR NICHTS verändert LG YOOUI + Multi-Zitat Zitieren
#4 15. Januar 2012 AW: Ordner und Dateien auslesen http://www.if-schleife.de/ PHP: <? php namespace rr ; define ( 'rr\WWW_ROOT' , getcwd ()); $dir_abs = WWW_ROOT ; $dir_rel = '' ; if (isset( $_GET [ 'pfad' ])) { $dir_abs = realpath ( WWW_ROOT . '/' . $_GET [ 'pfad' ]); $dir_len = strlen ( WWW_ROOT ); if (! $dir_abs || substr ( $dir_abs , 0 , $dir_len ) !== WWW_ROOT ) exit( "nope" ); $dir_rel = substr ( $dir_abs , $dir_len + 1 ) . DIRECTORY_SEPARATOR ;} if ( $dir_rel [ 0 ] === DIRECTORY_SEPARATOR ) $dir_rel = substr ( $dir_rel , 1 ); $files = array(); $folders = array(); foreach ( scandir ( $dir_abs ) as $f ) { $stack = is_dir ( $dir_abs . DIRECTORY_SEPARATOR . $f ) ? 'folders' : 'files' ; array_push ($ $stack , $f );} asort ( $files ); asort ( $folders ); print 'Dateien: <br />' ; list_files ( 'editor.php' , $dir_rel , $files ); print 'Verzeichnisse: <br />' ; list_files ( 'folder.php' , $dir_rel , $folders ); // ---------------- function list_files ( $script , $dir_rel , array & $files ) { print '<ul>' ; foreach ( $files as $file ) print '<li><a href="' . $script . '?pfad=' . $dir_rel . $file . '">' . $file . '</a></li>' ; print '</ul>' ;} + Multi-Zitat Zitieren