![]() |
[PHP] Dir-Listing Problem
hallo
ich hab die listing-skripte von luckie bekommen. und bin grad dabei die anzupassen, allerdings krieg ich es nicht hin, dass unterverzeichnisse angezeigt werden. ich bin nicht so fit in php, vielleicht kann mir jemand helfen das problem könnt ihr euch angucken wenn ihr auf ![]() die datei die aufgerufen wird, mit dem verzeichnis als parameter
Code:
und die datei in der die funktionen drin sind
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <?php echo "<title>fwsp.net/$folder</title>"; ?> <link rel="stylesheet" type="text/css" href="css/format.css"> <link rel="stylesheet" type="text/css" href="css/dir.css"> </head> <body> <div> <?php include $_SERVER['DOCUMENT_ROOT'].'/php/dirhelpers.php'; echo '<h2>Inhalt von '.$folder.'</h2>'; ?> <?php if (!file_exists($folder)) { echo "No such file or directory!"; echo "<hr>\n"; echo "<table>\n"; echo "<tr>\n"; echo "<td></td>"; echo "<td>'$cr'</td>"; echo "</tr>\n"; echo "</table>\n"; echo "</div>\n"; exit; } echo "<hr>\n"; echo "<div class='right'>Letzte Veränderung: ".date("Y-m-d H:i", filemtime($folder.newestfile($folder)))."</div>"; ?> </p> <table> <colgroup> <col width="200" class="left"> <col width="100" class="right"> <col width="360" class="left"> </colgroup> <?php $s = explode('/',$folder); array_pop($s); array_pop($s); $prefolder = implode('/', $s); if ($prefolder == '') { $prefolder = ''; } else { $prefolder = 'dirindex.php?folder='.$prefolder; } echo '<tr>'; echo '<th class="left">[url="dirindex.php?folder='.$folder.$dir.'&SortOrder=time"]Letzte Veränderung[/url]</th> <th class="left">[url="dirindex.php?folder='.$folder.$dir.'&SortOrder=size"]Größe[/url]</th> <th class="left">[url="dirindex.php?folder='.$folder.$dir.'&SortOrder=name"]Name[/url]</th>'; echo '</tr>'; echo '<tr>'; echo '<td></td> <td><PDir></td> <td>[img]image/dir_default.png[/img] [url="'.$prefolder.'/"][.........][/url]</td>'; echo '</tr>'; /*if (!strpos($folder, '.'))*/ $dirs = ListDirs($folder); foreach($dirs as $dir) { echo '<tr>'; echo '<td>'.date("Y-m-d H:i", filemtime($folder.$dir)).'</td> <td><DIR></td> <td>[img]image/dir_folder.png[/img] [url="dirindex.php?folder='.$folder.$dir.'/"]['.$dir.'][/url]</td>'; echo '</tr>'; } if ($SortOrder == '') { $SortOrder = 'name'; } $files = ListFiles($folder, $SortOrder); foreach($files as $file) { $title = GetTitleFromHTML($folder.$file); if ($title == '') { $title = $file; } echo '<tr>'; echo '<td>'.date("Y-m-d H:i", filemtime($folder.$file)).'</td> <td>'.format_filesize(filesize($folder.$file)).'</td> <td>[img]'.PickImage($folder.$file).'[/img] [url="/'.$folder.$file.'"]'.$title.'[/url]</td>'; echo '</tr>'; } ?> </table> <hr> <table> <tr> <?php echo '<td">Ordner: '.count($dirs).' Dateien: '.count($files).' ~ '.format_filesize(directory_size($folder)).'</td></tr>'; echo '<tr><td class="small">PHP-Listing © Michael Puff</td>'; ?> </tr> </table> </div> </body> </html>
Code:
mfg
<?php
/* Copyright (c) 2005: Michael Puff Url: [url]http://www.luckie-online.de[/url] Mail: [email]mpuff@luckie-online.de[/email] Version: 2.0 - 2005-11-06 */ // // Returns the lates file from a given directory // function newestfile($folder,$number=0)//$folder endet auf \ oder / { $Docs=Array(); $handle=opendir($folder); $Doccount=0; while (false !== ($file = readdir ($handle))) { if ($file[0] != "." && $file != 'index.php') { $Docs[$Doccount]=$file; $Time[$Doccount]=filemtime($folder.$Docs[$Doccount]); $Doccount++; } } closedir($handle); array_multisort($Time,SORT_DESC,$Docs); return $Docs[$number]; } // // Returns the title of a given HTML-file // function GetTitleFromHTML($htmlfile) { $content = file_get_contents($htmlfile); $start = strpos(strtolower($content),"<title>"); $end = strpos(strtolower($content),"</title>"); if (($start !== false) and ($end !== false)) return substr($content,$start+7,$end-$start-7); else return ""; } // // Returns the size in bytes of a given directory // function directory_size($nomrep){ $dossier = @opendir($nomrep); $file_size_up = 0; while ($Fichier = @readdir($dossier)){ if ($Fichier != "." && $Fichier != ".."){ if ($Fichier){ $file_size_up += filesize($nomrep."/".$Fichier); } } } @closedir($dossier); return $file_size_up; } // // Formats the filesize in a more readable format // function format_filesize( $filesize ) { $filesize = (int)$filesize; $units = array('Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); $tot_units = (count($units) - 1); $pass = 0; // set zero, for Bytes while( $filesize >= 1024 && $pass < $tot_units ) { $filesize /= 1024; $pass++; } return round($filesize, 2) .''. $units[$pass]; } // // Returns the sub-directories of a given directory // function ListDirs($dir) { $dirs=Array(); $handle=opendir($dir); $count=0; while(false !== ($s = readdir($handle))) { if (is_dir($s) && ($s[0] != '.')) { $dirs[$count] = $s; $count++; } } closedir($handle); array_multisort($dirs, SORT_ASC, $dirs); return $dirs; } // // Returns the files in a given directory // Valid values for $SortOrder: name, time, size // function ListFiles($dir, $SortOrder) { $files=Array(); $handle=opendir($dir); $count=0; while(false !== ($file = readdir($handle))) { if (is_file($dir.'/'.$file) && ($file != 'index.php')) { $files[$count] = $file; $Time[$count]=filemtime($dir.'/'.$file); $Size[$count]=filesize($dir.'/'.$file); $count++; } } closedir($handle); if ($SortOrder == 'name') { array_multisort($files, SORT_ASC, $files); } elseif ($SortOrder == 'time') { array_multisort($Time, SORT_DESC, $files); } elseif ($SortOrder == 'size') { array_multisort($Size, SORT_ASC, $files); } return $files; } function PickImage($Filename) { $s = pathinfo($Filename); $ext = $s["extension"]; switch ($ext) { case "pdf": return "image/dir_pdf.png"; break; case "zip": return "image/dir_zip.png"; break; case "exe": return "image/dir_exe.png"; break; default: return "image/dir_default.png"; break; } } ?> fwsp [edit=alcaeus]delphi- durch code-Tags ersetzt. Mfg, alcaeus[/edit] |
Re: [PHP] Dir-Listing Problem
also irgendwas ist da n bisschen kaputt bei dir....
der (apache?!) sagt "multiple choice" und bietet mir irgendwas kaputtes an. wenn man das kaputte dann wegmacht, bleibt frame.html übrige und das geht dann auch.(Siehe auch ganz unten) Aber zu deinem Problem: Du nimmst wohl die Funktion ListDirs().... übergibst du da den richtigen Pfad? das einfach mal per echo testen. Ansonsten sieht es nicht so aus, als ob ich dir auf anhieb helfen könnte. dazu müsste ich es erstmal selbst testen, ich nehme aber an, dass Luckies Script sehr wohl funktioniert. Also kann ich es ohne konkreten Anhaltspunkt wohl erst mal auf den oben genannten Fehler schieben. Also überprüfe mal, ob deine framepage (?) in ordnung ist. Hier der Quelltext, den fwsp.net zurückliefert:
Code:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD> <TITLE>300 Multiple Choices</TITLE> </HEAD><BODY> <H1>Multiple Choices</H1> The document name you requested (<code>/frame.html> <title>[fwsp.net]</title> <link rel=</code>) could not be found on this server. However, we found documents with names similar to the one you requested. Available documents: <ul>[*][url="/frame.html/title%3e%20%20%3clink%20rel="]/frame.html/title> <link rel=[/url] (common basename)[/list]</BODY></HTML> EDIT: hab mir deinen code mal kurz angesehen.... sieht soweit ganz gut aus, teste das ganze einfach mal lokal und/oder hau viele echos rein zum debuggen. |
Re: [PHP] Dir-Listing Problem
Nur mal so aus Neugier, Luckie:
Zitat:
mfg, mh166 |
Re: [PHP] Dir-Listing Problem
so, hab das frameset korrigiert. ich finde aber weiterhin keinen fehler in dem skript...
|
Re: [PHP] Dir-Listing Problem
ich hab das jetzt mal auf den kern runtergekürzt, und ich habe immer noch keinen erfolg.
Code:
das erste echo macht er ohne probleme. möchte die funktion ListDirs anders angesprochen werden?
<html>
<body> <?php include $_SERVER['DOCUMENT_ROOT'].'/php/dirhelpers.php'; echo ' '.$folder.'</p>'; $dirs = ListDirs($folder); foreach($dirs as $dir) { echo ' '.$dir.'</p>'; } ?> </body> </html> hier ist die funktion mal aus der datei:
Code:
function ListDirs($dir)
{ $dirs=Array(); $handle=opendir($dir); $count=0; while(false !== ($s = readdir($handle))) { if (is_dir($s) && ($s[0] != '.')) { $dirs[$count] = $s; $count++; } } closedir($handle); array_multisort($dirs, SORT_ASC, $dirs); return $dirs; } |
Re: [PHP] Dir-Listing Problem
ich glaub ich hab 'ne lösung:
Code:
$ordner = getcwd(); ist dabei das entscheidende.
<html>
<body> <?php include $_SERVER['DOCUMENT_ROOT'].'/php/dirhelpers.php'; echo ' '.$folder.'</p>'; $ordner = getcwd(); $dirs = ListDirs($ordner); foreach($dirs as $dir) { echo ' '.$dir.'</p>'; } ?> </body> </html> |
Re: [PHP] Dir-Listing Problem
was man nicht alles glaubt...
war es aber anscheinend nicht... HILFE!!! |
Re: [PHP] Dir-Listing Problem
Was geht denn jetzt nicht? Mit getwd() bekommst du ja nur das aktuelle Verzeichnis und das ist das in dem dein Script liegt, wenn es ausgeführt wird. hast du den Pfad auch mit einem / abgeschlossen? das müsste eigentlich die Vorraussetzung sein, damit mein Script funktioniert. Und dass es funktiniert, sieht man ja auf meiner Seite.
|
Re: [PHP] Dir-Listing Problem
so, hab mich jetzt ein bisschen mit php beschäftigt und die funktion, die die unterverzeichnisse anzeigen soll, verändert:
Code:
was interessant ist, ist das er nicht nur ordner als ordner anzeigt sondern auch dateien als ordner, obwohl das eigentlich mit !(is_file()) nicht möglich sein sollte.
function ListDirs($dir)
{ $dirs = Array(); $handle = opendir($dir); $count = 0; while ($s = readdir($handle)) { if ( (!(is_file($s))) AND ($s[0] !== '.') ) { $dirs[$count] = $s; $count++; } } closedir($handle); array_multisort($dirs, SORT_ASC, $dirs); return $dirs; } weiß jemand 'ne lösung? |
Re: [PHP] Dir-Listing Problem [/GELÖST]
gelöst:
Code:
function ListDirs($dir)
{ $dirs = Array(); $handle = opendir($dir); $count = 0; while ($s = readdir($handle)) { if ( (!(is_file($s))) AND (($s[0] != '.')) AND (is_dir($dir.$s)) ) { $dirs[$count] = $s; $count++; } } closedir($handle); array_multisort($dirs, SORT_ASC, $dirs); return $dirs; } |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz