Zufallsbilder

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Andavos
Mitglied
Beiträge: 145
Registriert: 13.07.2006 11:50
Wohnort: Winterthur

Beitrag von Andavos »

Immer noch die gleiche Meldung, in diser steht das es die Linie 554 ist, auf der steht:

Code: Alles auswählen

closedir($averz);
Muss man bei den Schrägstrichen was angeben?

Oder wie?
Wo muss ich überall im Code die Persönlichen daten angeben?
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Beitrag von Xwitz »

Welcher Schrägstrich und welche persönlichen Daten? Der relative Pfad zum Verzeichnis muß bei "//Welcher Ordner wird ausgelesen?" und nach echo "<img src=\" eingetragen werden.

Der Code funktioniert bei mir:

Code: Alles auswählen

<?php 
         //Welcher Ordner wird ausgelesen? 
         $ordner = "verzeichnis/"; 
          
         //Welche Bildendungen sollen erkannt werden? 
         $endungen = array("gif","jpg","jpeg","png","bmp"); 
          
          
         /****** Bilder auslesen ******/ 
         $bilder = array(); 
$verz = opendir($ordner); 
while($uverz = readdir($verz)) 
{ 
if($datei != "." && $uverz != ".." &&  is_dir($uverz)) 
{ 
$averz = opendir($ordner."/".$uverz); 
while($datei = readdir($averz)) 
{ 
if($datei != "." && $datei != "..") 
            { 
            $datei_endung = substr( strrchr($datei,".") ,1); 
          
            //Ist die Datei-Endung in dem Array vorhanden? 
            if(in_array($datei_endung,$endungen)) 
              { 
              $datei = $uverz."/".$datei; 
              $bilder[] = $datei; 
              } 
            } 
         } 
closedir($averz); 
}} 
closedir($verz); 
          
         //Zufälliges Bild wählen 
         srand ((double) microtime() * 10000000); 
         $key = array_rand($bilder); 
          
         //Bild ausgeben: 
         echo "<img src=\"verzeichnis/".$bilder[$key]."\">"; 
         ?>
Andavos
Mitglied
Beiträge: 145
Registriert: 13.07.2006 11:50
Wohnort: Winterthur

Beitrag von Andavos »

OK, jetzt geht es, allerdings kann ich nur einen Ordner aufrufen, aber ich wollte eigentlich das alle Bilder in einem Verzeichnis angezeigt werden, auch die, die ihrerseits wieder in einem Ordner sind, also so:

-Stammordner

Ordner im Stammordner mit Bilder drinn.

Ordner im Stammordner mit Bilder drinn.

Ordner im Stammordner mit Bilder drinn.

Ordner im Stammordner mit Bilder drinn.


Und alle Bilder die in diesen Ordnern drinn sind, sollten dann angezeigt werden. Ist das möglich?
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Beitrag von Xwitz »

Edit: Aus irgendeinem Grund funktioniert das nur, wenn die Datei, entsprechend angepaßt, in dem Stammverzeichnis liegt. Ich weiß bisher nicht warum.
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Beitrag von Xwitz »

Dann eben hintenrum, jetzt sollte es gehen (nur noch "verzeichnis/" anpassen).

Code: Alles auswählen

<?php 
         //Welcher Ordner wird ausgelesen? 
         $ordner = "verzeichnis/"; 
          
         //Welche Bildendungen sollen erkannt werden? 
         $endungen = array("gif","jpg","jpeg","png","bmp"); 
          
          
         /****** Bilder auslesen ******/ 
         $bilder = array(); 
chdir ($ordner);
$verz = opendir("."); 
while($uverz = readdir($verz)) 
{ 
if($uverz != "." && $uverz != ".." &&  is_dir($uverz))
{ 
$averz = opendir($uverz); 
while($datei = readdir($averz)) 
{ 
if($datei != "." && $datei != "..") 
            { 
            $datei_endung = substr( strrchr($datei,".") ,1); 
          
            //Ist die Datei-Endung in dem Array vorhanden? 
            if(in_array($datei_endung,$endungen)) 
              { 
              $datei = $uverz."/".$datei;
              $bilder[] = $datei; 
              } 
            } 
         } 
closedir($averz);
}} 
closedir($verz); 
          
         //Zufälliges Bild wählen 
         srand ((double) microtime() * 10000000); 
         $key = array_rand($bilder); 
          
         //Bild ausgeben: 
         echo "<img src=\"".$ordner."/".$bilder[$key]."\">"; 
         ?>
Wenn auch im Stammordner Bilder liegen dann

Code: Alles auswählen

if($uverz != "." && $uverz != ".." &&  is_dir($uverz))
durch

Code: Alles auswählen

if($uverz != ".." &&  is_dir($uverz))
ersetzen.
Andavos
Mitglied
Beiträge: 145
Registriert: 13.07.2006 11:50
Wohnort: Winterthur

Beitrag von Andavos »

Vielen Dank, es funktioniert einwandfrei!

Aber kann man da auch eine Adresse angeben?

z.b:
http://blablabla.de/bilder/

Geht das?
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Beitrag von Xwitz »

Eine Adresse wofür?
Andavos
Mitglied
Beiträge: 145
Registriert: 13.07.2006 11:50
Wohnort: Winterthur

Beitrag von Andavos »

also, dass ich Bilder von einem anderen Webspace anzeigen kann, da ich sie auf einem anderen Space habe, musste ich jetzt alle nocheinmal hochladen.... und das braucht jetzt natürlich Platz, deshalb würde ich gerne eine Adresse einfügen, aber geht das?
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Beitrag von Xwitz »

Das geht natürlich nicht, sonst könnte man auch mal auf die Schnelle z.B. die config.php von einem fremden Forum lesen.

Es gibt aber andere Möglichkeiten:

Auf den Webspace mit den Bildern kommt die view.php mit folgendem Inhalt:

Code: Alles auswählen

<?php 
         //Welcher Ordner wird ausgelesen? 
         $ordner = "verzeichnis/"; 
          
         //Welche Bildendungen sollen erkannt werden? 
         $endungen = array("gif","jpg","jpeg","png","bmp"); 
          
          
         /****** Bilder auslesen ******/ 
         $bilder = array(); 
chdir ($ordner); 
$verz = opendir("."); 
while($uverz = readdir($verz)) 
{ 
if($uverz != "." && $uverz != ".." &&  is_dir($uverz)) 
{ 
$averz = opendir($uverz); 
while($datei = readdir($averz)) 
{ 
if($datei != "." && $datei != "..") 
            { 
            $datei_endung = substr( strrchr($datei,".") ,1); 
          
            //Ist die Datei-Endung in dem Array vorhanden? 
            if(in_array($datei_endung,$endungen)) 
              { 
              $datei = $uverz."/".$datei; 
              $bilder[] = $datei; 
              } 
            } 
         } 
closedir($averz); 
}} 
closedir($verz); 
          
         //Zufälliges Bild wählen 
         srand ((double) microtime() * 10000000); 
         $key = array_rand($bilder); 
          
         //Bild ausgeben: 

$endung = substr( strrchr($bilder[$key],".") ,1);
header("Content-Type: image/".$endung);
readfile ($ordner."/".$bilder[$key]);

         ?>
Der Pfad muß angepaßt werden.

Da wo das Bild angezeigt werden soll kommt statt dem ganzen Code nur folgendes rein:

Code: Alles auswählen

<img src="http://www.bilderdomain.de/view.php" alt="">
Dann hat aber jedes angezeigte Bild den gleichen Namen (falls jemand die Bilder speichern will). Der Pfad muß angepaßt werden.

Ich habe es bisher nicht getestet. Die Zeile

Code: Alles auswählen

header("Content-Type: image/".$endung);
könnte durchaus falsch/ungeeignet sein.

Ausprobieren!
Andavos
Mitglied
Beiträge: 145
Registriert: 13.07.2006 11:50
Wohnort: Winterthur

Beitrag von Andavos »

Es ist aber nicht für das PHPbb-Forum, es ist für eine Private Website, da habe ich kein view.php!?
Antworten

Zurück zu „Coding & Technik“