kostenloser Webspace werbefrei: lima-city


Directory Listing Script

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    v*****r

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. vserver schrieb:
    ... Wie kann ich das machen, ohne das Script in jedem Verzeichniss zu installieren, sondern nur einmal? ...
    glob ?? (recursiv)directoryiterator

    Beitrag zuletzt geändert: 26.5.2012 4:31:24 von hemiolos
  4. Für das "meinedomain.de/4223" schau dir mal mod_rewrite und $_SERVER['PATH_INFO'] an ;)

    Den Inhalt eines Verzeichnisses liest du wie eine Datei aus, nur dass die Funktionen opendir, readdir und closedir heißen :)
  5. Autor dieses Themas

    v*****r

    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ß
  6. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    vserver schrieb:
    ich hab mir das mit dem opendir, readdir und closedir mal angesehen, komm da aber nicht weiter.
    Beispiel um einen Ordner auszulesen:
    $files = array();
    $dir = './';
    $handle = opendir($dir);
    
    while(($file = readdir($handle)) !== false) {
    	$files[] = $file;
    }
    closedir($handle);
  7. Autor dieses Themas

    v*****r

    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
  8. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    tranbo schrieb:
    Schau dir mal mod_rewrite an :-)
    Damit könntest du eine Umleitung auf dein Script machen wenn ein Ordner aufgerufen wird...
  9. hackyourlife schrieb:
    tranbo schrieb:
    Schau dir mal mod_rewrite an :-)
    Damit könntest du eine Umleitung auf dein Script machen wenn ein Ordner aufgerufen wird...


    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.
  10. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    tranbo schrieb:
    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.
    Hab ich da was überlesen?
    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?
  11. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    tranbo schrieb:
    Jop, er hat sowas vor wie mod_dir :-)
    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.

    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...
  12. Autor dieses Themas

    v*****r

    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
  13. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    vserver schrieb:
    Wie kann ich das machen, ohne das Script in jedem Verzeichniss zu installieren, sondern nur einmal?
    Du machst in / eine
    .htaccess
    -Datei mit folgendem Inhalt:
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^(.*)$ list.php?$


    Dann erstellst du in / eine Datei namens
    list.php
    mit dem Inhalt:
    <?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
  14. Autor dieses Themas

    v*****r

    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ß
  15. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    vserver schrieb:
    wenn man nur http://46.38.241.115/ eingibt sollte eine Error PHP Datei kommen.
    Dann machst du es eben so:
    <?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
    );
    
    ?>
  16. Autor dieses Themas

    v*****r

    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
  17. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    vserver schrieb:
    ich sehe da irgendwie immer noch des Verzeichniss: http://46.38.241.115/
    Irgendwie sieht es so aus, als ob die .htaccess-Datei nicht richtig ausgewertet werden würde...

    Du solltest eigentlich ein "Not Found" sehen... bist du dir sicher, dass die .htaccess-Datei genau den Inhalt hat den ich vorher gepostet habe?
  18. Autor dieses Themas

    v*****r

    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ß
  19. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    vserver schrieb:
    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?
    Gib dir das mal mit
    echo($directory);
    aus und schau ob das stimmt...

    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.
  20. Autor dieses Themas

    v*****r

    Hallo,

    meinst du in meinem PHP Script http://pastebin.com/yWyGBAFB

    Oder wie meinste das mit den Variablen ausgeben?

    Gruß
  21. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    vserver schrieb:
    Oder wie meinste das mit den Variablen ausgeben?
    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).

    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
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!