Random Image Display: Aber nur eines ;-)

matthiasschnueriger

Erfahrenes Mitglied
Hallo PHP-Community

Ich habe folgendes Script von Nenad Motika, welches ein Zufallsbild aus einem bestimmten Ordner auswählt und darstellt. Das ganze funktioniert auch einwandfrei, jedoch kann es auch mal sein, dass ein Ordner nur 1 Bild beinhaltet und dann wird gar nichts mehr angezeigt... Wie muss ich das Script abändern/erweitern?

Vielen Dank und Gruss!

PHP:
<?php 
#This script has been developped by Nenad Motika [nenad@bezveze.com]
#Please feel free to use it and to contact me for any reason

//read folder
$folder=opendir("."); 
while ($file = readdir($folder)) 
$names[count($names)] = $file; 
closedir($folder);
//sort file names in array
sort($names);
//remove any non-images from array
$tempvar=0;
for ($i=0;$names[$i];$i++){
$ext=strtolower(substr($names[$i],-4));
if ($ext==".jpg"||$ext==".gif"||$ext=="jpeg"||$ext==".png"){$names1[$tempvar]=$names[$i];$tempvar++;}
}
//random
srand ((double) microtime() * 10000000);
$rand_keys = array_rand ($names1, 2);
//random image from array
$slika=$names1[$rand_keys[0]]; 
//image dimensions
$dimensions = GetImageSize($slika); 
if (isset($HTTP_GET_VARS["pic"])){header ("Location: $slika");}
else {echo "<img src=\"$slika\" $dimensions[3]>";}
?>
 
Hi mir war gerade langweilig und da an dem Script ein paar Dinge sind die ich so nicht verstehe bzw mir nicht gefallen hab ich mal ein Script selbst geschrieben. Hat den selben Funktionsumfang aber ohne den Fehler den du beschrieben hast. Selbst kurz getestet und scheint zu Funktionieren. :p

PHP:
<?php
	$Config_Ordner="./images/";
	$Config_Bilder_Endungen=array(".jpg",".bmp",".jpeg",".gif");
	
	//Ordner einlesen
	$Ordner=opendir($Config_Ordner);
	While(false!=($Bilder[]=readdir($Ordner))){}
	closedir($Ordner);
	//-Ordner  einlesen
	
	//Alle Dateien die keine Bilder sind aus der Liste löschen
	For($Nummer=0;$Nummer<count($Bilder);$Nummer++)
	{
		For($Extension=0;$Extension<count($Config_Bilder_Endungen);$Extension++)
		{
			if($Config_Bilder_Endungen[$Extension]==stristr($Bilder[$Nummer],$Config_Bilder_Endungen[$Extension]))
			{
				$Puffer[]=$Bilder[$Nummer];
			}
		}
	}
	//-Alle Dateien die keine Bilder sind aus der Liste löschen
	$Bilder=$Puffer;
	
	srand(((int)((double)microtime()*1000003))); //Nur bis Version 4.2.0 nötig
	
	$Bild=$Bilder[array_rand($Bilder)];
	
	if(isset($_GET["pic"]))
	{
		header("Location: ".$Config_Ordner.$Bild);
	}
	else
	{
		$Dimensionen=GetImageSize($Config_Ordner.$Bild);
		echo("<img src=".$Config_Ordner.$Bild." ".$Dimensionen[3].">");
	}
	
	
?>

Viel spaß damit.:-)

Edit: Natürlich muss du noch oben den Ordner in denen deine Bilder sind angeben.
 
Lieber CraHack

Das nenn ich mal einen Service!! Ich habe wirklich nicht erwartet, dass mir jetzt da jemand ein neues, besseres Script hinhaut... und das innerhalb eines Tages!

Ich habe dein Script bereits getestet und es funktioniert einwandfrei.

Nochmals danke und schöne Festtage!
 
Zurück