php display random image

This is a modified version of an uncredited script I found; it picks an image at random from a folder specified and displays them, works for different sized images as well.

Useful for things like forum signatures or site headers.

<?php
        $folder = '.';  // Images location
        $extList = array();     // Image types
        $extList['gif'] = 'image/gif';
        $extList['jpg'] = 'image/jpeg';
        $extList['jpeg'] = 'image/jpeg';
        $extList['png'] = 'image/png';
        $img = null;
        if (substr($folder,-1) != '/') {
                $folder = $folder.'/';  // Prevents remote folder setting
        }
        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){
                        $imageNumber = time() % count($fileList);
                        $img = $folder.$fileList[$imageNumber];
                }
        }
        if($img!=null){
                $imageInfo = pathinfo($img);
                $contentType = 'Content-type: '.$extList[$imageInfo['extension']];
                header ($contentType);
                readfile($img);
        }else{
                if(function_exists('imagecreate')){
                        header ("Content-type: image/png");     // Create a PNG as the output
                        $im = @imagecreate (100, 100) or die ("Cannot initialize new GD image stream");
                        $background_color = imagecolorallocate ($im, 255, 255, 255);
                        $text_color = imagecolorallocate ($im, 0,0,0);
                        imagestring ($im, 2, 5, 5,  "IMAGE ERROR", $text_color);
                        imagepng ($im);
                        imagedestroy($im);
                }
        }
?>

Imported from 2012/08/15

Import Note: Does anyone still use forums now? I’m not even sure they did that much in 2012…