|
|
|
| Здравствуйте уважаемые знатоки! Помогите разобраться.
Нужно, чтобы фотографии, отправленные с формы ниже обрабатывались сразу несколько при нажатии кнопки формы отправить.
<form method='post' action='action.php' enctype='multipart/form-data'>
<label>Загрузка фотографий (не более 5-ти фото)<br>
<input type='file' name='photo1' id='file'><br>
<input type='file' name='photo2' id='file'><br>
<input type='file' name='photo3' id='file'><br>
<input type='file' name='photo4' id='file'><br>
<input type='file' name='photo5' id='file'><br>
</label>
<label><input type='submit' name='submit' value='Отправить'></label>
</form>
|
Файл-обработчик я написал, но он обрабатывает только одну фотографию, это и понятно.
Как сделать, чтобы обрабатывались все или несколько фотографий
if (empty($_FILES['photo1']['name']))
{
//если переменной не существует (пользователь не отправил изображение),то присваиваем ему заранее приготовленную картинку с надписью "нет фото"
$photo1 = "photos/net-photo.png";
}
else
{
//иначе - загружаем изображение пользователя
$directory = 'photos/';
//папка, куда будет загружаться начальная картинка и ее сжатая копия
$max_filesize = 1048576;
//присваиваем переменной максимальное значение
if (filesize($_FILES['photo1']['tmp_name']) > $max_filesize)
exit ("<h2>Исходный файл превышает 1 Мб</h2><HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='8; URL=anketa.php?4'><input name='back' class='sub_vote' type='button' value='Вернуться назад' onclick='javascript:self.back();'></HEAD></HTML>");
if (!filesize($_FILES['photo1']['tmp_name'])) exit ("<h2>Исходный файл превышает 1 Мб, либо вы пытаетесь загрузить посторонний файл.</h2><HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='8; URL=anketa.php?4'><input name='back' class='sub_vote' type='button' value='Вернуться назад' onclick='javascript:self.back();'></HEAD></HTML>");
//проверка формата исходного изображения и размера.
if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['photo1']['name']))
{
$original = $_FILES['photo1']['name'];
$istochnik = $_FILES['photo1']['tmp_name'];
$target = $directory . $original;
move_uploaded_file($istochnik, $target);
//загрузка оригинала в папку $directory
if(preg_match('/[.](GIF)|(gif)$/', $original))
{$rezultat_ne_obrezanniy = imagecreatefromgif($directory.$original) ;}
//если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
if(preg_match('/[.](PNG)|(png)$/', $original))
{$rezultat_ne_obrezanniy = imagecreatefrompng($directory.$original) ;}
//если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $original))
{$rezultat_ne_obrezanniy = imagecreatefromjpeg($directory.$original); }
//если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
//ОБРЕЗАНИЕ И СЖАТИЕ фото
$w = 600; $h = 700; //присваиваем макс значения ширины и высоты
// создаём исходное изображение на основе исходного файла и определяем его размеры
$w_src = imagesx($rezultat_ne_obrezanniy); //вычисляем ширину
$h_src = imagesy($rezultat_ne_obrezanniy); //вычисляем высоту изображения
$koaf=$w/$h;//коэфициент сжатия уменьшенной копии
$src_koaf=$w_src/$h_src;//коэфициент сжатия оригинала
if(($w_src<$w)&&($h_src<$h)) //если оригинал меньше исходного изображения
{
$delfile = $directory.$original; //присваиваем переменной путь до оригинала
unlink ($delfile); //удаляем оригинал загруженного изображения
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='8; URL=anketa.php?4'><h2>Исходное изображение слишком маленькое, загрузите картинку чуть больше.</h2><input name='back' class='sub_vote' type='button' value='Вернуться назад' onclick='javascript:self.back();'></HEAD></HTML>"; return true;
}
if($koaf<$src_koaf) $h=$w/$src_koaf;
else $w=$h*$src_koaf;
$rezultat = imagecreatetruecolor($w,$h); // создаём пустую пропорциональную картинку
imagecopyresampled($rezultat, $rezultat_ne_obrezanniy, 0, 0, 0, 0, $w, $h, $w_src, $h_src);
$date=date('Y-m-d_H-i-s'); //вычисляем дату и время вплоть до секунд для названия аватара
imagejpeg($rezultat, $directory.$date.".jpg"); //сохраняем изображение
$photo1 = $directory.$date.".jpg";
$delfile = $directory.$original; //присваиваем переменной путь до оригинала
unlink ($delfile); //удаляем оригинал загруженного изображения
}
else
{
//в случае несоответствия формата, выдаем соответствующее сообщение
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='8; URL=anketa.php?4'></HEAD></HTML>";
exit ("<h2>Будте внимательны, изображение должно иметь форматы JPG,GIF или PNG</h2><input name='back' class='sub_vote' type='button' value='Вернуться назад' onclick='javascript:self.back();'>"); //останавливаем выполнение сценариев
}
}
include ("bd.php");
$result4 = mysql_query ("UPDATE data SET photo1='$photo1' WHERE id_session='$id_session'"); //запись в БД
header('Location: anketa.php?4&konec');
|
| |
|
|
|
|
|
|
|
для: Sarat
(12.08.2014 в 14:32)
| | <input type='file' name='photo1'><br>
<input type='file' name='photo2'><br>
<input type='file' name='photo3'><br>
<input type='file' name='photo4'><br>
<input type='file' name='photo5'><br>
Label у вас тоже не к месту, подумайте сами почему? Атрибут ID, это уникальный идентификатор, и никак не может быть одним и тем же у нескольких элементов как это у вас - id='file'.
<input type='file' name='photo[]'><br>
<input type='file' name='photo[]'><br>
.....
<input type='file' name='photo[]'><br>
|
И обрабатывайте в цикле массив $_FILES.
if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $original)) - в помойку, ибо под таким разрешением можно выслать что угодно. Уж лучше getimagesize().
Обрамляя код вв-тегом code, дополняйте и РНР-тегами его, читать же невозможно такой код. | |
|
|
|