Dateien in einem Verzeichnis auslesen
Franz Schuster
- php
0 AndreD0 Franz Schuster0 Nick
0 Franz Schuster0 AndreD0 Franz Schuster0 Tom
Hallo.
Ich hätte mal eine frage, und zwar:
Ist es irgendwie möglich, alle in einem Verzeichnis liegenden Dateien, in diesem Fall lauter Fotos automatisch in einer PHP-Datei aufzulisten?
Es ist folgendermaßen: Jeder USer kann sich Bilder hochladen. Soviel er will. Und die werden für jeden User in ein bestimmtes Verzeicnis geladen. Und da ich aus Sicherheitsgründen kein directory-Listing anschalten kann, suche ich eine Möglichkeit, die Fotos aufzulisten.
Herauskommen soll also eine Datei, die bei jede Aufruf den kompletten Ordnerinhalt eines Verzeichnisses anzeigt. Ob nun die Bilder direkt in diese Datei eingebunden werden, oder nur Links mit Beschreibung oder nur Links mit Bildnamen bestehen ist egal. ICh brauche jedenfalls unbedingt so eine Datei, die mir den Inhalt des Verzeichnisses auflistet.
Und nochwas: (Auch wichtig): Immer wenn Bilder hochgeladen weden, haben sie CHMOD 600, kann ich das nicht so machen, dass das auf 755 geändert wird, automatisch??
In Hinsicht auf baldige Antwort freue und bedanke ich mich recht Herzlich.
Franz Schuster
Servus,
Ist es irgendwie möglich, alle in einem Verzeichnis liegenden Dateien, in diesem Fall lauter Fotos automatisch in einer PHP-Datei aufzulisten?
Ja klar, eine leichte Übung für PHP :-)
opendir() http://de3.php.net/manual/de/function.opendir.php
öffnet Dir ein Verzeichnishandle
readdir() http://de3.php.net/manual/de/function.readdir.php
damit kannst Du alle Dateien in einem Verzeichnis mit einer Schleife auslesen.
chmod() http://de3.php.net/manual/de/function.chmod.php
Damit kannst Du die rwx-Rechte einer Datei/Verzeichnis ändern.
Es ist folgendermaßen: Jeder USer kann sich Bilder hochladen. Soviel er will. Und die werden für jeden User in ein bestimmtes Verzeicnis geladen. Und da ich aus Sicherheitsgründen kein directory-Listing anschalten kann, suche ich eine Möglichkeit, die Fotos aufzulisten.
Beachte die Sicherheitsrisiken wenn Du Usern erlaubst eigene Dateien auf Dein System zu laden. Checke auf jeden Fall ob es sich auch um eine Bilddatei in einer best. Grösse handelt. Das kannst Du z.B. über die Dateiendung, den MIME-Typ erledigen. Ausserdem solltest Du die Dateigrösse in Deiner php.ini begrenzen.
Herauskommen soll also eine Datei, die bei jede Aufruf den kompletten Ordnerinhalt eines Verzeichnisses anzeigt. Ob nun die Bilder direkt in diese Datei eingebunden werden, oder nur Links mit Beschreibung oder nur Links mit Bildnamen bestehen ist egal.
Die Darstellung ist dann in der Tat nur noch ein Kinderspiel...
Und nochwas: (Auch wichtig): Immer wenn Bilder hochgeladen weden, haben sie CHMOD 600, kann ich das nicht so machen, dass das auf 755 geändert wird, automatisch??
Siehe chmod(), aber ist das wirklich nötig? 0600 heisst doch glaub ich Lese- und Schreibrechte für den Erzeuger, also IMHO den php-Prozess der die Bilder reinstellt?
Viel Spass beim erstellen des Scripts
& Gruss AndreD
Es ist folgendermaßen: Jeder USer kann sich Bilder hochladen. Soviel er will. Und die werden für jeden User in ein bestimmtes Verzeicnis geladen. Und da ich aus Sicherheitsgründen kein directory-Listing anschalten kann, suche ich eine Möglichkeit, die Fotos aufzulisten.
Beachte die Sicherheitsrisiken wenn Du Usern erlaubst eigene Dateien auf Dein System zu laden. Checke auf jeden Fall ob es sich auch um eine Bilddatei in einer best. Grösse handelt. Das kannst Du z.B. über die Dateiendung, den MIME-Typ erledigen. Ausserdem solltest Du die Dateigrösse in Deiner php.ini begrenzen.
Das Formular überprüft automatisch, ob es eine Bilddatei ist. Sie muss kleiner sein als 500kb und JPG, GIF TIFF oder PNG - Format haben, das ist schon geregelt. Und es ist eine feste Benutzergruppe, die Daten hochladen kann, alles Arbeitskollegen.
Siehe chmod(), aber ist das wirklich nötig? 600 heisst doch glaub ich Lese- und Schreibrechte für den Erzeuger, also IMHO den php-Prozess der die Bilder reinstellt?
600 ja, aber die Bilder sollen ja von jedem angesehen werden können.
Danke für ihre Hilfe.
Franz Schuster.
Hey, du Franz ! Wieso hast du meine Emailadresse da reingeschreieben? Das ist MEINE !!!!!!!!!!!!!
Cya. Nick.
opendir() http://de3.php.net/manual/de/function.opendir.php
öffnet Dir ein Verzeichnishandle
Ok. Ich habe das jetzt mal probiert, aber wie kan ich nun alle aufgelisteten Dateien als Links definieren? Weiss das auch noch jemand?
Hi Franz,
Ok. Ich habe das jetzt mal probiert, aber wie kan ich nun alle aufgelisteten Dateien als Links definieren? Weiss das auch noch jemand?
zum Beispiel so?
define( "C_WEBSITE_URL", "http://" . $_SERVER["HTTP_HOST"] . "/" );
define( "C_IMAGE_DIR", "images/" );
$full_path = "";
$count = count( $all_files );
for( $i = 0, $i <= $count, $i++ )
{
$full_path = C_WEBSITE_URL . C_IMAGE_DIR . $all_files[$i];
echo( "<a href="" . $full_path . ""><img src="" . $full_path . "" alt="Bild Nr. " . $i . "" /></a>" );
}
Ist ungetestet und nur mal eine Idee, sollte aber so ähnlich funktionieren. Dein Pfad für die Bilder kann nat. auch relativ sein, ich finde eine absolute aber eigentlich besser, da die eigentlich immer passt, egal von wo aus Du das Script startest.
Fette Grüsse,
AndreD
Mein versuch:
<?php
$handle=opendir ('.');
while (false !== ($file = readdir ($handle))) {
define( "C_WEBSITE_URL", "http://www.meineurl.de" . "/" );
define( "C_IMAGE_DIR", "bilder/" );
$full_path = "";
$count = count( $all_files );
for($i=0; $i<=$count; $i++ )
{
$full_path = C_WEBSITE_URL . C_IMAGE_DIR . $all_files[$i];
echo( "<a href="" . $full_path . ""><img src="" . $full_path . "" alt="Bild" /></a>" );
}
}
closedir($handle);
?>
Aber jetzt kommen nur die "ERSATZBILDER" also kleine Kästchen mit dem Linktext. Und der Link führt ins Bilderverzeichnis direkt, also einfach in das Vereichnis "http://www.meineurl.de/images"
Was habe ich jetz falsch gemacht?
Hello,
Mein versuch:
<?php
$handle=opendir ($dir);
$filelist = array();
while ($filename = readdir ($handle))
{
if(is_file($dir."/".$filename))
{
$filelist[] = $filename;
}
}
closedir($handle);
define( "C_WEBSITE_URL", "http://www.meineurl.de" . "/" );
define( "C_IMAGE_DIR", "bilder/" );
foreach($filelist as $filename)
{
$full_path = C_WEBSITE_URL . C_IMAGE_DIR . $filename;
echo( "<a href="" . $full_path . ""><img src="" . $full_path .
"" alt="Bild" /></a>" );
}
?>
Probier es mal so...
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo, also jetzt bekomme ich komischerweise die Fehlermeldung:
Warning: readdir(): supplied argument is not a valid Directory resource in /home/www/web82/html/projekte/9c-pg/login/data/memberpics/Bernd/listdirneu.php on line 4
Warning: closedir(): supplied argument is not a valid Directory resource in /home/www/web82/html/projekte/9c-pg/login/data/memberpics/Bernd/listdirneu.php on line 11
Aber alles ist auf CHMODs 777
Warum gehts jezt nicht mehr?