Zet alle bestanden eerst in een array in plaats van ze direct te echoën. Vervolgens kun je met [php]shuffle[/php]() de inhoud van de array door elkaar schudden en als je daarna de eerste waarde uit die array pakt, heb je een random bestand...
Mocht je nog meer nodig hebben: dit onderstaande script pakt een willekeurige foto/afbeelding uit de map en toont die.
Nummertje bovenaan werkt als soort willekeurig-nummer.
Ik gebruik dit op de frontpage van www.zunflappie.nl om de 3 foto's weer te geven (niet zichtbaar in IE).
Geef ik bovenaan die nummers hetzelfde nummer krijg ik ook dezelfde afbeelding. Link werkt dan tenminste ook.
Let wel: het is al een oud script en wellicht werkt het op php6 niet probleemloos.
<?php
// welke map moet hij openen?
$folder = 'forum_foto';
$nummer_bestand = 1; // welk nummer heeft dit bestand (bestanden in dezelfde map met hetzelfde nummer geven hetzelfde fototje)
// welke bestanden moet hij openen?
$extList = array();
$extList['gif'] = 'image/gif';
$extList['jpg'] = 'image/jpeg';
$extList['jpeg'] = 'image/jpeg';
$extList['png'] = 'image/png';
// hieronder niets veranderen
$img = null;
// controleren of er een map is opgegeven
if (substr($folder,-1) != '/')
{
$folder = $folder.'/';
}
// is er een specifieke afbeelding opgegeven?
if (isset($_GET['img']))
{
$imageInfo = pathinfo($_GET['img']);
if (isset( $extList[ strtolower( $imageInfo['extension'] ) ] ) && file_exists( $folder.$imageInfo['basename'] ))
{
$img = $folder.$imageInfo['basename'];
}
}
else
{
$fileList = array();
$handle = opendir($folder);
while (false !== ( $file = readdir($handle) ) )
{
$file_info = pathinfo($file);
if (isset( $extList[ strtolower( $file_info['extension'] ) ] ))
{
$fileList[] = $file;
}
}
closedir($handle);
if (count($fileList) > 0)
{
$aantal = count($fileList);
$imageNumber = rand(1, "$aantal");
// $imageNumber = (time() + $nummer_bestand) % count($fileList);
$img = $folder.$fileList[$imageNumber];
}
}
// uitvoer = laten zien van de foto
echo "<img width=\"250\" height=\"175\" src=\"$img\">";
?>