Вывод случайных изображений скриптом PHP

Предлагаю вашему вниманию небольшой скрипт на PHP, который позволит выводить на страницах сайта любые изображения или фотографии в случайном порядке или, скажем другими словами, реализовать простое слайд-шоу изображений. Для простоты реализации поставленной задачи все изображения участвующие в слайд-шоу должны быть размещены в одной директории. Файлы изображений или фотографий могут иметь любые имена и любое расширение, соответствующее графическому представлению файла, например JPG, PNG, GIF и другие.

В предлагаемом ниже скрипте кроме часто употребляемых функций, нами еще будут использованы стандартные функции языка PHP, которые предназначены для работы с файловой системой и с которыми стоит для начала ознакомиться или кому-то просто вспомнить о них:

scandir( $dirName );

Эта функция позволяет получить список всех файлов и каталогов, которые расположены по пути, указанному в параметре $dirName. Она возвращает массив, в котором содержатся имена файлов и каталогов, расположенных по пути, переданном в параметре $dirName. Если путь в параметре $dirName указан неверно, то функция вернет логическое FALSE и вдобавок сгенерирует сообщение об ошибке уровня E_WARNING (предупреждающее сообщение).

$array = pathinfo( $path );

Данная функция возвращает детальную информацию о пути к файлу, указанному в параметре $path, а конкретнее она возвращает ассоциативный массив, в котором содержится информация о пути $path. В составе возвращаемого массива содержатся элементы: dirname, basename и extension, значения которых можно получить как показано здесь:

<?php
   $pathDetails = pathinfo( $path );
   echo $pathDetails['dirname'] . "</br>";
   echo $pathDetails['basename'] . "</br>";
   echo $pathDetails['extension'] . "</br>";
?>

Например, если в параметре $path будет содержаться путь к файлу, такой как /www/htdocs/photos/image1.jpg, то на выходе мы получим следующие данные:

dirname: /www/htdocs/photos/
basename: image1.jpg
extension: jpg

Кроме описанных выше функций стоит упомянуть еще одну, которая будет использоваться нами для генерации случайных значений, необходимых нам, чтобы файлы изображений выбирались в случайном порядке:

mt_rand( [int min, int max] )

Эта функция генерирует _наилучшее_ случайное значение. Она по сути является заменой используемой по умолчанию в PHP функции rand (), но работает гораздо быстрее и использует генератор случайных чисел с известными характеристиками.
Если вызывать функцию mt_rand () без необязательных аргументов min и max, то она вернет псевдослучайное целое значение в диапазоне от 0 до RAND_MAX (для OS Windows RAND_MAX равна 32768). Если же Вы хотите получить случайное число от 1 до 10 (включительно), то вызвать функцию нужно так:

mt_rand( 1 , 10 )

Ну а теперь перед вами сам скрипт, выводящий случайные изображения, с комментариями к командам:

<?php
   $dirPhotos = $_SERVER['DOCUMENT_ROOT'] . '/photos/'; // указываем директорию с файлами изображений или фотографий
   showRandomPhotos( $dirPhotos ); // вызываем главную функцию нашего проекта

   // главная функция
   function showRandomPhotos( $dirName ){
      $fileExt = array( 'png', 'jpg', 'jpeg' ); // перечисляем расширения файлов, которые мы разрешаем отображать
      if( empty( $dirName ) or !is_dir( $dirName )) die( 'Директория пуста или не соответствует формату!' );

      $files = scandir( $dirName ); // получаем список всех файлов и каталогов по указанному пути
      $photos = array(); // создаем массив, в который будут заноситься имена файлов изображений

      // в цикле перебираем все полученные значения директорий и файлов от функции scandir
      for( $i = 0; $i<sizeof( $files ); $i++ ){
         // исключаем из списка значения, которые не соответствуют имени файлов, полученных от функции scandir
         if( $files[$i] == '..' or $files[$i] == '.' ){
            continue;
         }         

         // получаем детальную информацию о файле
         $infoDetails = pathinfo( $files[$i] );

         // проверяем расширение файла, которые были разрешены нами в массиве $fileExt
         // и если расширение разрешено, то добавляем имя файла в массив $photos[]
         if( in_array( $infoDetails['extension'], $fileExt )){
            $photos[] = $files[$i];
         }
      }
      // выводим на страницу изображение, выбранное случайным образом из массива $photos[]
      echo '<img src="/photos/' . $photos[mt_rand( 0, (sizeof( $photos )-1 ))] . '">';
   }
?>

Используя таким образом вывод изображений на страницы сайта, можно собственно и не беспокоиться о том, сколько файлов с изображениями, фотографиями находится в директории и какие у них имена. Также можно не беспокоиться и о расширениях файлов, так как допустимые расширения мы указали в скрипте в массиве array ( ‘png’, ‘jpg’, ‘jpeg’ ).

Возможно вам захочется контролировать предельное количество, размер, имена файлов, которые могут добавляться в массив, и тогда Вы можете расширить этот скрипт добавлением соответствующих команд для проверки. Скрипт же, показанный в этом уроке, всего лишь базовая конструкция для всеобщего изучения.

Похожие материалы
Обзор бесплатной CMS Atom-M На данный момент уже разработано достаточно большое количество как коммерческих, так и бесплатных систем управ...
Поиск графического контента для сайта Графика – это один из основных типов контента на сайте. На многих современных сайтах есть картинки, фотографии...
Возможные причины резкого падения позиций сайта Постоянные колебания позиций сайта являются нормальным явлением. Они могут происходить по разным причинам - из...
Как создать сайт Как создать свой сайт - этот вопрос задает себе большое количество людей, недаром он вводится только в одном я...
Категории раздела
Новое на форуме
Популярные материалы
Популярные теги