Directory Listing Script
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufruf
befinden
code
dank
datei
file
header
http
index
inhalt
installieren
list
not
ordner
schau
text
type
url
versuch
verzeichnis
-
Hallo,
ich habe ein Directory Listing Script, der mir die Verzeichnisse anzeigt bzw. was sich jeweils in den Verzeichnissen befindet. Jetzt habe ich ein Problem, ich habe mehrere Ordner bsp.
/1
/2
/4223
/3484
usw.
ich möchte wenn ich nun das Script so aufrufe:
http://meinedomain.de/4223 das ich dann Verzeichniss Listening über den Ordner 4223 habe, ich komme aber nicht weiter zurück als der Ordner /4223, also man sollte dann nur die Dateien und Ordner sehen was sich im Ordner 4223 befinden.
Wie kann ich das machen, ohne das Script in jedem Verzeichniss zu installieren, sondern nur einmal?
Mein Script: http://goo.gl/Hbxdm
Gruß
Beitrag zuletzt geändert: 25.5.2012 23:42:19 von vserver -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
vserver schrieb:
glob ?? (recursiv)directoryiterator
... Wie kann ich das machen, ohne das Script in jedem Verzeichniss zu installieren, sondern nur einmal? ...
Beitrag zuletzt geändert: 26.5.2012 4:31:24 von hemiolos -
Servus,
ich hab mir das mit dem opendir, readdir und closedir mal angesehen, komm da aber nicht weiter. Kannst du mir dabei helfen?
Wäre top.
Gruß -
vserver schrieb:
Beispiel um einen Ordner auszulesen:
ich hab mir das mit dem opendir, readdir und closedir mal angesehen, komm da aber nicht weiter.$files = array(); $dir = './'; $handle = opendir($dir); while(($file = readdir($handle)) !== false) { $files[] = $file; } closedir($handle);
-
Wie könnte ich das einbauen, das es so funktioniert wie ich das gemeint habe, auch wenn ich jetzt eine ID eingebe bsp. /4992 und den Ordner gibt es noch nicht, das ich dann auf eine Error Seite weitergeleitet werde.
Script php: http://pastebin.com/yWyGBAFB
Wär top, Danke
Beitrag zuletzt geändert: 26.5.2012 16:27:59 von vserver -
tranbo schrieb:
Damit könntest du eine Umleitung auf dein Script machen wenn ein Ordner aufgerufen wird...
Schau dir mal mod_rewrite an :-) -
hackyourlife schrieb:
tranbo schrieb:
Damit könntest du eine Umleitung auf dein Script machen wenn ein Ordner aufgerufen wird...
Schau dir mal mod_rewrite an :-)
Ne, es gibt eine Index-Datei in der das Script gespeichert ist. Der Benutzer ruft dann z.B. www.meinedomain.de/4233 auf und intern wird durch mod_rewrite auf www.meinedomain.de/index.php?ordner=4233 umgeleitet. So kann man dann einfach per $_GET['ordner'] herausfinden, welchen Ordner der Client sehen wollte. -
tranbo schrieb:
Hab ich da was überlesen?
Der Benutzer ruft dann z.B. www.meinedomain.de/4233 auf und intern wird durch mod_rewrite auf www.meinedomain.de/index.php?ordner=4233 umgeleitet. So kann man dann einfach per $_GET['ordner'] herausfinden, welchen Ordner der Client sehen wollte.
Der TE hat auf seinem Webspace Ordner (z.B. /4233).
Und wo soll man jetzt den Inhalt des Ordners sehen können?
Soll das sowas wie das von mod_dir werden? -
tranbo schrieb:
Und dafür machst du dir am besten eine /list.php, auf die du per mod_rewrite dann weiterleitest, wenn es sich bei der URI um einen Ordner handelt.
Jop, er hat sowas vor wie mod_dir :-)
Versuchs mal mit der htaccess:RewriteEngine on RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.*)$ list.php?$
und der list.php:<?php header('content-type: text/plain'); echo($_SERVER['REDIRECT_QUERY_STRING']); ?>
Daraufhin wird dir jeweils bei einem Ordner der relative Pfad zum document_root angezeigt... -
Servus,
ich hab das jetzt so: http://46.38.241.115/
direkt im www Verzeichniss habe ich die Ordner /1 /2 und /12 angelegt, das funktioniert soweit so
bei http://46.38.241.115/1
kommt
http://46.38.241.115/1/?$
bei http://46.38.241.115/2
kommt
http://46.38.241.115/2/?$
Wie kann ich nun weiter machen
ich möchte wenn ich nun das Script so aufrufe:
http://meinedomain.de/4223 das ich dann Verzeichniss Listening über den Ordner 4223 habe, ich komme aber nicht weiter zurück als der Ordner /4223, also man sollte dann nur die Dateien und Ordner sehen was sich im Ordner 4223 befinden.
Wie kann ich das machen, ohne das Script in jedem Verzeichniss zu installieren, sondern nur einmal?
Gruß
Beitrag zuletzt geändert: 26.5.2012 20:00:44 von vserver -
vserver schrieb:
Du machst in / eine
Wie kann ich das machen, ohne das Script in jedem Verzeichniss zu installieren, sondern nur einmal?
-Datei mit folgendem Inhalt:.htaccess
RewriteEngine on RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.*)$ list.php?$
Dann erstellst du in / eine Datei namens
mit dem Inhalt:list.php
<?php $directory = $_SERVER['REDIRECT_QUERY_STRING']; if($directory == '') $directory = './'; if(!is_dir($directory)) { header('HTTP/1.1 404 File Not Found'); echo("the requested directory '$dir' was not found"); exit(); } echo(<<< EOF <html> <head> <title>Listing: $directory</title> </head> <body> <pre> EOF ); $handle = opendir($directory); while(($file = readdir($handle)) !== false) { $path = $directory.$file; if(is_dir($path)) echo(htmlentities('<DIR> ')); else echo(' '); echo('<a href="' . urlencode($file) . '">' . htmlentities($file) . '</a>'); if(is_file($path)) { $stat = stat($path); echo(htmlentities(" ({$stat['size']} bytes)\n")); } else { echo("\n"); } } closedir($handle); echo(<<< EOF </pre> </body> </html> EOF ); ?>
Ob dir die Ausgabe so gefällt ist deine Sache, du kannst es verändern wie du es brauchst...
Beitrag zuletzt geändert: 26.5.2012 21:15:00 von hackyourlife -
Hey,
Danke, ich hab ja jetzt den Script http://46.38.241.115/index.php, da möchte ich das ich nur http://46.38.241.115/12 eingeben muss dann wird in dem Directory Listing Script alles was im Verzeichniss 12 aufgelistet wird, man sollte aber nicht weiter zurück kommen als was in 12 drin ist. wenn man nur http://46.38.241.115/ eingibt sollte eine Error PHP Datei kommen.
Gurß -
vserver schrieb:
Dann machst du es eben so:
wenn man nur http://46.38.241.115/ eingibt sollte eine Error PHP Datei kommen.<?php $directory = $_SERVER['REDIRECT_QUERY_STRING']; if($directory == '') { header('HTTP/1.1 404 File Not Found'); header('content-type: text/plain'); echo('Not Found!'); exit(); } if(!is_dir($directory)) { header('HTTP/1.1 404 File Not Found'); echo("the requested directory '$dir' was not found"); exit(); } echo(<<< EOF <html> <head> <title>Listing: $directory</title> </head> <body> <pre> EOF ); $handle = opendir($directory); while(($file = readdir($handle)) !== false) { $path = $directory.$file; if(is_dir($path)) echo(htmlentities('<DIR> ')); else echo(' '); echo('<a href="' . urlencode($file) . '">' . htmlentities($file) . '</a>'); if(is_file($path)) { $stat = stat($path); echo(htmlentities(" ({$stat['size']} bytes)\n")); } else { echo("\n"); } } closedir($handle); echo(<<< EOF </pre> </body> </html> EOF ); ?>
-
Hey,
ich sehe da irgendwie immer noch des Verzeichniss: http://46.38.241.115/
und wenn ich nun http://46.38.241.115/1 eingebe zeigt es mir ganz normal das Verzeichniss an. Sollt ja so sein das man dann die Files sieht durch den Script http://46.38.241.115/, aber halt nur wenn man das eintippt: http://46.38.241.115/1 oder http://46.38.241.115/12 das dann nur der Ordner 12 aufgelistet wird, ins Home kommt man nicht zurück bzw. auch gar nie rrein.
Gruß Tobi
Beitrag zuletzt geändert: 26.5.2012 21:44:49 von vserver -
vserver schrieb:
Irgendwie sieht es so aus, als ob die .htaccess-Datei nicht richtig ausgewertet werden würde...
ich sehe da irgendwie immer noch des Verzeichniss: http://46.38.241.115/
Du solltest eigentlich ein "Not Found" sehen... bist du dir sicher, dass die .htaccess-Datei genau den Inhalt hat den ich vorher gepostet habe? -
Upps, hatte ein Rechtschreibfehler drin: .htacces statt .htaccess.
Jetzt funktioniert die .htaccess, aber wenn ich die http://46.38.241.115/2/ eingebe, dann sagt er das the requested directory '' was not found, aber es gibt ja das Verzeichniss?
Gruß -
vserver schrieb:
Gib dir das mal mit
aber wenn ich die http://46.38.241.115/2/ eingebe, dann sagt er das the requested directory '' was not found, aber es gibt ja das Verzeichniss?
aus und schau ob das stimmt...echo($directory);
Gib dir ansonsten mal alle Variablen aus:print_r($_SERVER);
Such dir dort dann die Variable die den Ordner enthält und verwend das dann bei der Zuweisung für $directory. -
Hallo,
meinst du in meinem PHP Script http://pastebin.com/yWyGBAFB
Oder wie meinste das mit den Variablen ausgeben?
Gruß -
vserver schrieb:
Das mit "requested directory '' was not found" kommt daher, dass in der $directory-Variablen anscheinend nicht der richtige Wert eingefüllt wird (in der list.php).
Oder wie meinste das mit den Variablen ausgeben?
Ich weiß jetzt auch warum das so ist...
Beim kopieren der htacces hier her hab ich das letzte Zeichen vergessen
Also so müsste die .htaccess ausssehen:RewriteEngine on RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.*)$ list.php?$1
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage