Tom: Zufälliges Bild einbinden klappt nicht wirklich...

Beitrag lesen

Hello,

ich habe das mal für etwas modernere PHPs umgeschrieben:

<?php   #### zufallsbild.php ####

$_files = glob('*.{jpg,png,gif}', GLOB_BRACE);
  if (count($_files) == 0) exit;
  shuffle($_files);

foreach( $_files as $filename )
  {
      if (false !== ($_imginfo = getimagesize($filename)))
      {
          header('Content-Type: '.$_imginfo['mime']);
          readfile($filename);
          exit;
      }
  }

?>

Und so funktioniert es:

$_files = glob('*.{jpg,png,gif}',GLOB_BRACE);

Mit der glob()-Funktion werden im der Variable $_files alle Dateinamen[1] gesammelt, auf die das angegebene Muster passt. Duch die Variante GLOB_BRACE werden hier alle Files mit den Endungen '.jpg', '.png' und '.gif' gesucht.

Wenn keine passenden Files vorhanden waren, wird das Script abgebrochen. Man sollte dann ggf. noch einen passenden Header zurückgegen, das für die Response kein Inhalt vorhanden ist.

Mit shuffle() wird das Array mit den Dateinamen gemischt.

In der foreach()-Scheife wird Eintrag für Eintrag mit getimagesize() geprüft, ob sich hinter dem gefundenen Dateinamen wirklich ein Bild verbirgt. Wenn es ein Bild ist, wird der passende Mime-Header dafür ausgegeben und der dateiinhalt ausgelesen. Das Script wird dann beendet.
Hat es sich nicht um ein Bild gehandelt, oder ist dieses nicht lesbar, wird der nächste Name ausprobiert. Dies geht solange, bis der Dateiname zu einem Bild gehört, oder kein Name mehr in der Liste vorhanden ist.

Glob findet hier allerdings nur die Files mit den Endungen, genauso wie sie hier geschrieben wurden, ist also casesensitive.

[1] Dateinamen, Verzeichnisnamen, Links, ...

Liebe Grüße aus Syburg

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de