nach kurzer netter Vor-PM von Dr. Death zum Thema (ursprünglich als Snippet-Ergänzung gedacht) möchte ich mein Posting gerne hier wiederholen:
Ich beschäftige mich gerade mit zufälligen Bildern im Header, wie auf
http://www.phpbb.de/viewtopic.php?t=162961 bzw.
http://www.phpbb.com/kb/article/adding- ... ader-image
beschrieben.
Die zwei kleinen Nachteile der Methode sind, dass man die core Datei includes/functions.php ändern muss, und dies bei einer Änderung der Anzahl der Bilder auch immer wieder tun muss.
Eine recht elegante Alternative, die mit Änderungen an der styles/.../template/overall_header.html auskommt (oder sogar ganz ohne (?), je nach dem wo {SITE_LOGO_IMG} herkommt), ist z.B. unter
http://www.alistapart.com/articles/randomizer/ oder
http://ma.tt/scripts/randomimage/
beschrieben.
Diese Technik kann man noch verkürzen - mein Favorit ist der so entstehende Zweizeiler (für PHP ab 4.2):
Code: Alles auswählen
<?php
// Grab all desired file names from the proper folder.
$BilderNamen=glob("./MyImage*.png");
// Redirect to one of them randomly.
header('Location: '.$BilderNamen[mt_rand(0, count($BilderNamen)-1)]);
?>
Ok... das mit dem glob() ist natürlich einleuchtend, könnte man notfalls mit opendir() usw. vermeiden, aber kennt jemand eine (einfache) Möglichkeit, sowas zu cachen? Ideal wäre ohne DB-Zugriff...
Danke für Deine Info,
aber der Befehl "glob" kann in phpBB nicht verwendet werden, da er in manchen Filesystemen nicht korrekt funktioniert und erst ab PHP 4.3 verfügbar ist.
Siehe auch: http://de.php.net/manual/en/function.glob.php
Zusätzlich sollten alle Zugriffe auf Filesystem (wenn möglich) aus performance Gründen vermieden werden.
Wenn bei jedem Seitenaufruf ein "glob" oder ein "fopen()" alle möglichen Bilder "abgrasen" muss, kann es einen stark besuchten Server belasten.
Daher ist es an dieser Stelle besser auf bewusst vorhandene Bilder zuzugreifen.
Du kannst aber gerne dazu ein Thema im "Coding" oder "Bastelstube" Forum posten.... dies per PN zu diskutieren halte ich nicht für sinnvoll![]()

Nur bekannte Dateinamen zu verwenden ist aber sicherlich die einfachste und schnellste Lösung, sogar in nur einer einzigen Zeile:

Code: Alles auswählen
// Passe die 20 an die tatsächliche Anzahl der Bilder an.
header("Location: ./MyImage-".mt_rand(1, 20).".png"); // ungetestet...
Für mein Eindruck eine elegante Alternative zum Zurückgeben des Bildes durch das Script selbst, aber sieht da von Euch jemand eventuelle Nebenwirkungen oder Folgeprobleme?
Herzlichen Dank!