![]() |
[PHP] DirectoryListings Part 2
Liste der Anhänge anzeigen (Anzahl: 1)
Folgendes Problem: Ich habe vor ein kleines WebFTP Script u schreiben. Dabei habe ich mir gedacht, dass oben immer ein DirectoryListing erscheint, so wie hier:
![]()
Code:
Und die beiden relevaten Funktionen ListDirs und ListFiles
<html>
<head> <title>LittleWebFTP</title> <link rel="stylesheet" type="text/css" href="css/webftp.css"> </head> <body> <h1>LittleWebFTP</h1> <?php $path = getcwd().'/'.$path; echo '[b]Contents of[/b] '.$path; ?> </p> [img]images/line.png[/img] <table class="dir"> <colgroup> <col width="150" align="left"> <col width="75" align="right"> <col width="675" align="left"> </colgroup> <?php include 'php/webftp.php'; echo '<tr>'; echo '<th class="dir">[url="index.php?SortOrder=time"]Last modified[/url]</th> <th class="dir"><a class="parent" href="index.php?SortOrder=size">Size</th> <th class="dir">[url="index.php?SortOrder=name"]Name[/url]</th>'; echo '</tr>'; echo $path; $dirs = ListDirs($path); foreach($dirs as $dir) { echo '<tr>'; echo '<td class="dir">'.date("Y-m-d H:i", filemtime($dir)).'</td> <td class="dir"><DIR></td> <td class="dir">[url="index.php?path='.$dir.'"]['.$dir.'][/url]</td>'; echo '</tr>'; } ?> </table> <table class="files"> <colgroup> <col width="150" align="left"> <col width="75" align="right"> <col width="675" align="left"> </colgroup> <?php if ($SortOrder == '') { $SortOrder = 'name'; } echo $path; $files = ListFiles($path, $SortOrder); foreach($files as $file) { echo '<tr>'; echo '<td class="files">'.date("Y-m-d H:i", filemtime($file)).'</td> <td class="files">'.format_filesize(filesize($file)).'</td> <td class="files">[url="'.$file.'"]'.$file.'[/url]</td>'; echo '</tr>'; } ?> </table> [img]images/line.png[/img] <table class="tblfooter"> <tr> <?php echo '<td class="total">'.'Total: '.count($files).' file(s) - '.count($dirs).' directory(s) ~'.format_filesize(directory_size($path)).'</td>'. '<td></td>'; ?> </tr> </table> </p> </body> </html>
Code:
Das haut aber irgendwie nicht so ganz hin. Wenn ich auf einen Ordner klicke dann gibt mir das
//
// Returns the sub-directories of a given directory // function ListDirs($dir) { $dirs=Array(); $handle=opendir($dir); $count=0; while(false !== ($file = readdir($handle))) { if (is_dir($file) /*&& ($file != '.')*/) { $dirs[$count] = $file; $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($file)) { $files[$count] = $file; $Time[$count]=filemtime($files[$count]); $Size[$count]=filesize($files[$count]); $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; }
Code:
folgenden Pfad aus (zum Beispiel): /var/www/l3s11195/html/Ablage/Privat/LittleWebFTP/css aber alles was passiert ist, dass aus dem Listing alle Verzeichnisse bis auf [.] und [..] und Dateien verschwinden. Seit acht Uhr doktere ich da nun schon dran rum und bin kein Stückchen weitergekommen. Wo ist mein Denkfehler? Was mache ich falsch? Oder packe ich es prinzipiell falsch an?
$path = getcwd().'/'.$path;
echo '[b]Contents of[/b] '.$path; Zum Ausprobieren alles noch mal im Anhang. |
Re: [PHP] DirectoryListings Part 2
Hallo!
Passe die Schleife in der Funktion "ListFiles" folgendermaßen an:
Code:
Du hattest das Verzeichnis vergessen, womit die Datei natürlich gefunden wurde. Eine entsprechende Anpassung muss auch noch in der index.php gemacht werden (Zeilen 58 und 59):
while(false !== ($file = readdir($handle)))
{ if (is_file($dir.'/'.$file)) { $files[$count] = $file; $Time[$count]=filemtime($dir.'/'.$file); $Size[$count]=filesize($dir.'/'.$file); $count++; } }
Code:
Grüße
echo '<td class="files">'.date("Y-m-d H:i", filemtime($path.'/'.$file)).'</td>
<td class="files">'.format_filesize(filesize($path.'/'.$file)).'</td> Christian |
Re: [PHP] DirectoryListings Part 2
Gefiel dir
![]() |
Re: [PHP] DirectoryListings Part 2
Hallo Christina, das war's. Irgendwann wird man glaube ich blind, wenn man da zu lange draufguckt. jetzt reagiert6 er nur etwas merkwürdig, wenn man auf die Punkte [.] und [..] klickt, die das aktuelle und das übergeordnete Verzeichnis repräsentieren.
|
Re: [PHP] DirectoryListings Part 2
Zitat:
Code:
<?php
// Rootverzeichnis ausgehend von dieser Datei. Es ist nicht möglich aus dem // Script später in eine höhere Ebene zu wechseln. // // HINWEIS: Den Pfad ohne abschließendes / angeben $root_dir = '../../../'; // Wenn Sie beim Verschieben von Dateien den Zielordner aus einer Baum- // struktur auswählen wollen, so setzen Sie diese Einstellung auf "true". // Soll stattdessen nur ein Eingabfeld zur dirketen Angabe eines Pfads // angezeigt werden, so setzen Sie die Einstellung auf "false". $move_tree = true; // Wenn beim Öffnen einer Datei (Klick auf Dateiname) oder Anzeigen der // Codeansicht statt eines normalen, neuen Fensters ein kleines Popup // angezeigt werden soll, dan setzen Sie die Einstellung auf "true", sonst // auf "false". Für das Popup muss JavaScript in Ihrem Browser aktiviert // sein. $open_popup = true; // Haben Sie die Popup-Einstellung auf "true" gesetzt, also aktiviert, so // können Sie hier die Breite (width) und Höhe (height) des Popups setzen. $popup_width = '550'; $popup_height = '600'; // Falls nach dem Anlegen eines Ordners Fehler auftreten, liegt dies meist an // einem falsch konfigurierten safe_mode des Servers. Wenn Sie Zugriff auf // die php.ini haben, so deaktivieren sie den safe_mode, oder setzen Sie die // folgende Zeile auf true: $use_ftp = true; $use_ftp = false; // Die folgenden FTP Daten müssen nur angegeben werden, wenn Sie den FTP // Modus aktiviert haben $ftp_hostserver = ''; $ftp_username = ''; $ftp_password = ''; // FTP Pfad zum Rootverzeichnis, welches Sie oben in $root_dir angegeben // haben. Bitte mit einem / beginnen und enden. Bspw. /www/upload/ $ftp_rootdir = ''; |
Re: [PHP] DirectoryListings Part 2
Ich glaube, ich kann das alles begraben. Ich habe gerade ein Uploadscript ausprobiert und diese Fehlermeldung bekommen:
Zitat:
|
Re: [PHP] DirectoryListings Part 2
Versuche einmal den Server-Pfad $_SERVER['DOCUMENT_ROOT'] zu verwenden. Das war ein Tipp, den ich über Google auf die Schnelle gefunden habe.
|
Re: [PHP] DirectoryListings Part 2
Danke für den Tipp. Aber das habe ich auch schon probiert. Ich habe gestern noch eine Mail an UD Media geschickt, worauf sie geantwortet haben, dass ich die Groß- und Kleinschreibung überprüfen solle. Ich habe drauf geantwortet:
Zitat:
|
Re: [PHP] DirectoryListings Part 2
Bei dir ist wohl der Safemode akriv, Luckie.
Versuch zum Vergleich mal, eine Datei mit relativem Pfad zu lesen (./this/path) und nicht mit dem absoluten. Glaub zwar nicht, dass das hilft, aber ein Versuch ists wert. |
Re: [PHP] DirectoryListings Part 2
Habe ich auch schon probiert. Aber sie schreiben ja eindeutig, dass der PHP Upload möglich wäre, deswegen mü+sste ich auch das Recht haben eine Datei anzulegen. Ich warte mal ab, was die jetzt antworten. Aber ich fände es eine Frechheit mir Webspace zu diesen Konditionen zu verkaufen und dann kann ich ihn doch nicht so nutzen, wie ich will und wie sie es anpreisen. :evil:
|
Re: [PHP] DirectoryListings Part 2
Hättest dich ja mal bei mir melden können. Würde mich schon interessieren, wenn jemand einen eventuellen Bug gefunden hat.
Zu deinem SAFE Mode-Fehler, hast du es mal mit den FTP Funktionen von PHP Versucht. Habe bei mir extra FTP eingeführt, damit das Script auch mit aktivem SAFE Mode funktionier. Zumindest bei einem User mit diesem Problem war es danach möglich. Sonst frag doch mal deinen Hoster, ob er den SAFE Mode nicht deaktivieren könnte. Über den Nutzen dieser Erweiterung streiten sich einige immer noch und AFAIK wird er doch in neueren PHP Versionen ganz gestrichen. |
Re: [PHP] DirectoryListings Part 2
Mail an den Hoster ist ja raus, siehe oben. Antwort steht noch aus. Aber die FTP Lösung, von der ich nicht weiß, wie sie geht, kann es ja auch nicht sein. Ich wollte zum Beispiel eine Logdatei nebenbei führen.
Zitat:
|
Re: [PHP] DirectoryListings Part 2
Zitat:
![]() Zitat:
Btw, bin nun bis Freitag weg, kann also erst dann wieder hier vorbeischauen ;) |
Re: [PHP] DirectoryListings Part 2
Ach so, was mir bez. Safe Mode noch einfällt: Soweit ich weiß, muss dort der Besitzer (UID) des Pfades, auf den eine IO-Operation agewandt wird mit dem ausführenden Benutzer des Scipts (also dir) übereinstimmen. Schau mal nach, ob du überall als Besitzer deiner Dateien und Ordner eingetragen bist.
|
Re: [PHP] DirectoryListings Part 2
Hi Luckie,
Ich habe vor kurzem etwas ähnliches realisiert. Jedoch bin ich z.Z. inner Schule, und habe deshalb zum einen grad wenig Zeit :wink: Und zum anderen kann ich das ganze hier schlecht in ein zip-Archiev packen. Sobald ich zu hause bin, schick ichs dir. PS: siehe PN |
Re: [PHP] DirectoryListings Part 2
@chewie: Wie mache ich das denn? Mit FileZilla kann ich die Zugriufssrechte kontrollieren,a ber wie geht das mit dem Besitz?
@Hador: Nicht nötig, wenn ich was fertiges wollte, dann hätte ich schon längst einen gefunden. Aber ich will es ja selber schreiben. Und so lange ich keine Schreibrechte habe, wird deins genauso versagen. |
Re: [PHP] DirectoryListings Part 2
Nachtrag: ich habe es jetzt mal mi FTP probiert:
Code:
Das bringt mir allerdings folgende Fehlermeldungen:
<?php
$Server = 'luckie-online.de'; $User = 'foo'; $PW = 'bar'; function FTPDirList($dir) { $conn_id = ftp_connect($Server); $login_result = ftp_login($conn_id, $User, $PW); return ftp_nlist($conn_id, $dir); } ?> Zitat:
Noch ein Nachtrag: Ich muss was falsch machen. Ich habe jetzt ein sehr gutes FTP Script gefunden: ![]() |
Re: [PHP] DirectoryListings Part 2
Zitat:
|
Re: [PHP] DirectoryListings Part 2
Hm. FileZilla kennt das wohl nicht. Aber ich werde es mit FTP machen, scheint mir auch einfacher zu sein. Desweiteren ist es wohl möglich, dass die einem auch den safe_mode ausschalten, wenn das gewünscht wird.
Ich mache mal ein neues Thema zu dem FTP Kram auf. |
Re: [PHP] DirectoryListings Part 2
Zitat:
Code:
global $Server, $User, $PW;
|
Re: [PHP] DirectoryListings Part 2
Du bist ziemlich spät dran. Ich habe alles schon gelöst. ,)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 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-2025 by Thomas Breitkreuz