Вывод случайных изображений скриптом 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’ ).

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

Похожие материалы
Оптимизация изображений При публикации записи на своем блоге или статьи желательно вставлять в материал изображение, так или иначе отн...
Внутренняя оптимизация сайта - что это такое? Поговорим о важном моменте в продвижении - это его внутренняя оптимизация сайта. Что сопутствует уверенному пр...
Увеличьте свой коммерческий трафик с помощью Pinterest У каждой социальной сети есть своя какая-то уникальная тема, которая по-разному привлекает определенную аудито...
Как попасть в каталог DMOZ? Многие веб-мастера задают себе вопрос: “Как попасть в дмоз?”. Большинство каждую неделю пытаются пробить свой ...
Категории раздела
Новое на форуме
Популярные материалы
Популярные теги