САМОУЧИТЕЛЬ PHP 4



         

Пример: фотоальбом


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

Листинг 28.1. Сценарий photo.php: простейший фотоальбом

<?

$ImgDir="img";       // Каталог для хранения изображений

@mkdir($ImgDir,666); // Создаем, если его еще нет

// Проверяем, нажата ли кнопка добавления фотографии

if(@$doUpload) {

  // Проверяем, принят ли файл

  if(file_exists($File)) {

     // Все в порядке — добавляем файл в каталог с фотографиями

     // Используем то же имя, что и в системе пользователя

     Copy($File,"$ImgDir/".basename($File_name));

  }

}

// Теперь считываем в массив наш фотоальбом

$d=opendir($ImgDir);  // открываем каталог

$Photos=array();      // изначально альбом пуст

// Перебираем все файлы

while(($e=readdir($d))!==false) {

  // Это изображение GIF, JPG или PNG?

  if(!ereg("^(.*)\\.(gif|jpg|png)$",$e,$P)) continue;

  // Если нет, переходим к следующему файлу,

  // иначе обрабатываем этот

  $path="$ImgDir/$e";      // адрес

  $sz=GetImageSize($path); // размер

  $tm=filemtime($path);    // время добавления

  // Вставляем изображение в массив $Photos

  $Photos[$tm] = array(

    'time' => filemtime($path), // время добавления

    'name' => $e,               // имя файла

    'url'  => $path,            // его URI  

    'w'    => $sz[0],           // ширина картинки

    'h'    => $sz[1],           // ее высота

    'wh'   => $sz[3]            // "width=xxx height=yyy"

  );

}

// Ключи массива $Photos — время в секундах, когда была добавлена

// та или иная фотография. Сортируем массив: наиболее "свежие"

// фотографии располагаем ближе к его началу.

krsort($Photos);

// Данные для вывода готовы. Дело за малым — оформить страницу.

?>

<body>

<form action=photo.php method=POST enctype=multipart/form-data>

<input type=file name=File><br>

<input type=submit name=doUpload value="Закачать новую фотографию">




Содержание  Назад  Вперед