clipped from: photomatt.net   

Random Image Script


This is your standard random image script that takes a slightly different approach than most, namely using standard HTTP headers instead of reading the file through the script.


For the simplest possible installation, just drop this code in a directory with the images you want to rotate, and call it like you would a normal image, for example:


<img src="http://photomatt.net/dropbox/2003/rotate/rotate.php" alt="A Random Image" />

Installation/Usage


Code


A Rotator Apart


<?php
/*
    By Matt Mullenweg > http://photomatt.net
    Inspired by Dan Benjamin > http://hiveware.com/imagerotator.php
    Latest version always at:
    http://photomatt.net/scripts/randomimage
*/


// Make this the relative path to the images, like "../img" or "random/images/".
// If the images are in the same directory, leave it blank.
$folder = '';

// Space seperated list of extensions, you probably won't have to change this.
$exts = 'jpg jpeg png gif';


$files = array(); $i = -1; // Initialize some variables
if ('' == $folder) $folder = './';

$handle = opendir($folder);
$exts = explode(' ', $exts);
while (false !== ($file = readdir($handle))) {
    foreach($exts as $ext) { // for each extension check the extension
        if (preg_match('/\.'.$ext.'$/i', $file, $test)) { // faster than ereg, case insensitive
            $files[] = $file; // it's good
            ++$i;
            }
        }
    }
closedir($handle); // We're not using it anymore
mt_srand((double)microtime()*1000000); // seed for PHP < 4.2
$rand = mt_rand(0, $i); // $i was incremented as we went along

header('Location: '.$folder.$files[$rand]); // Voila!
?>

Notes


For additional information about the thinking behind this script, see A Better Image Rotator.


  • Ondra
    17.04.2006 @ 11:11 am

    Nice code, thanks.

    I suggest you put the next two lines just before the last line:
    header(”Cache-Control: no-cache, must-revalidate”); // HTTP/1.1
    header(”Expires: Mon, 26 Jul 1997 05:00:00 GMT”);

    This will prevent the browser and/or the cache-server to cache the images. Otherwise the randomness is pretty poor.