Выводим случайное изображение на сайте быстро и просто. Используя несколько базовых функций PHP таких как glob(), count(), header(), filesize(), in_array(), time(), readfile() и функции расширения Fileinfo.

В данном примере мы попробуем справиться задачей, вывода случайного изображения на сайте средствами простого PHP скрипта. В примере используются несколько базовых функций php таких как glob(), count(), header(), filesize(), in_array(), time(), readfile() и функции расширения Fileinfo.

Для более наглядного представления используем структуру директорий, которая имеет следующий вид:

\-Images
|  \-rotate.php
|  \-image1.jpg
|  \-image2.gif
|  \-image3.png
|  \-image4.tiff
|-index.html

Листинг rotate.php

Весь код по выводу случайной картинки находится в файле rotate.php в корне директории Images. Там же находятся и все графические файлы image1.jpg, image2.gif, image3.png, которые необходимо показывать в случайном порядке. Содержание файла rotate.php:
<?php
//Массив MIME для графических файлов
$arFileInfo = Array(
	"image/jpeg", //JPEG (RFC 2045 и RFC 2046)
	"image/gif", //GIF(RFC 2045 и RFC 2046)
	"image/pjpeg", //JPEG
	"image/png", //Portable Network Graphics(RFC 2083)
	"image/svg+xml", //SVG
	"image/tiff", //TIFF(RFC 3302)
	"image/vnd.microsoft.icon", //ICO
	"image/vnd.wap.wbmp", //WBMP
);

//Массив файлов
$arFileList = Array();
//Получаем ресерс mime типов
$FileInfo = finfo_open(FILEINFO_MIME_TYPE);
foreach(glob("*") as $FileName){
	//Определим MIME тип текущего файла
	$MimeType = finfo_file($FileInfo,$FileName);
	if(in_array($MimeType,$arFileInfo)){
		//Подготавливаем массив файла
		$arFileList[] = Array(
			"NAME" => $FileName, //Имя файла в текущем случее совпадает с путем к файлу
			"PATH" => $FileName, //Путь к файлу
			"MIME" => $MimeType, //Mime тип файла
			"SIZE" => filesize($FileName) //Размер файла в Байтах
		);
	}
}
//Закрываем ресерс mime типов
finfo_close($FileInfo);

//Определяем количество найденых файлов
$CountFiles = count($arFileList);
if($CountFiles>0){
	//Выбираем случайны файл из массива
	$arRandFile = $arFileList[time()%$CountFiles];
}

//Добавляем в HTTP заголовок MIME тип файла
header('Content-type: '.$arRandFile["MIME"]);
//Добавим в HTTP заголовок оригинальное имя файла
header('Content-Disposition: filename='.$arRandFile["NAME"]);
//Добавляем в HTTP заголовок размер файла в байтах
header('Content-Length: '.$arRandFile["SIZE"]);
//Считываем и выводим содержимое файла
readfile($arRandFile["PATH"]);
?>

Листинг index.html

Для того чтобы посмотреть как работает скрипт rotate.php файл index.html приведем к следующему виду:
<!DOCTYPE html>
<html>
	<head>
		<title>Вывод случайной картинки средствами PHP</title>
		<meta charset="UTF-8">
	</head>
	<body>
		<img src="Images/random.php" alt="Случайная картинка">
	</body>
</html>

В результате при каждом обновлении страницы index.html картинка будет меняться.