Давайте напишем небольшой сценарий, представляющий собой простейший фотоальбом с возможностью добавления в него новых фотографий.
Листинг 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="Закачать новую фотографию">