Страница 1 из 2

Как сделать на три фото ?

Добавлено: 30 мар 2014, 19:38
ROM710
Здравствуйте, Кто подскажет - делаю доску объявлений, как бы все нориально, но прикрепляет только одно из трех фото, а две не работают, вчем причина может быть ?

Re: Как сделать на три фото ?

Добавлено: 31 мар 2014, 13:48
Хыиуду
"Дорогие ученые. У меня который год в подполе происходит подземный стук. Объясните, пожалуйста, как он происходит".
Ваш вопрос примерно столь же информативен. Хотя бы код приложите.

Re: Как сделать на три фото ?

Добавлено: 01 апр 2014, 10:54
ROM710
Да - пожалуйста : $foto=""; $fotoksize=""; $size[0]=""; $size[1]="";
/// Добавляем ФОТО к объявлению!
if ($fotoadd==TRUE) { if (isset($_COOKIE['wrbcookies']) or $fotoaddany==TRUE) {

$allfotoname="";

$filename=$_FILES["file1"]['name']; // определяем имя ЗАГРУЖАЕМОГО файла

if (strlen($filename)>2) {

$fotoname=$_FILES["file1"]['name']; // определяем имя файла
$foto=$fotoname;

$fotosize=$_FILES["file1"]['size']; // Запоминаем размер файла

// проверяем расширение файла
$valid_types = array("gif","jpg","png","jpeg"); // допустимые расширения
$ext = strtolower(substr($fotoname, 1 + strrpos($fotoname, ".")));
if (!in_array($ext, $valid_types)) {echo '<B>ФАЙЛ НЕ загружен.</B> Возможные причины:

- разрешена загрузка только файлов с такими расширениями: gif, jpg, jpeg, png

- Вы пытаетесь загрузить не графический файл;

- неверно введён адрес или выбран файл;</B>
'; exit;}


// ЗАЩИТЫ от ВЗЛОМА (ФОТО)

// 1. считаем кол-во точек в выражении - если большей одной - СВОБОДЕН!
$findtchka=substr_count($fotoname, "."); if ($findtchka>1) {echo "ТОЧКА встречается в имени файла $findtchka раз(а). Это ЗАПРЕЩЕНО!
\r\n";}

// 2. если в имени есть .php, .html, .htm - свободен!
$bago="Извините. В имени ФАйла <B>запрещено</B> использовать .php, .html, .htm";
if (preg_match("/\.php/i",$fotoname)) {echo "Вхождение <B>\".php\"</B> найдено. $bago"; exit;}
if (preg_match("/\.html/i",$fotoname)) {echo "Вхождение <B>\".html\"</B> найдено. $bago"; exit;}
if (preg_match("/\.htm/i",$fotoname)) {echo "Вхождение <B>\".htm\"</B> найдено. $bago"; exit;}

// 3.

// 4. Проверяем, может быть файл с таким именем уже есть на сервере
if (file_exists("$fotodir/$foto")) {exit("Файл с таким именем уже существует на сервере! Измините имя на другое!");}
// Конец защит по имени файла

$fotoksize=round($fotosize/10.24)/100; // размер ЗАГРУЖАЕМОГО ФОТО в Кб.
$fotomax=round($max_file_size/10.24)/100; // максимальный размер фото в Кб.
if ($fotoksize>$fotomax) {exit("Вы превысили допустимый размер фото!
<B>Максимально допустимый</B> размер фото: <B>$fotomax </B>Кб.
<B>Вы пытаетесь</B> загрузить изображение: <B>$fotoksize</B> Кб!");}

if ($fotosize>"0" and $fotosize<$max_file_size) {
copy($_FILES["file1"]['tmp_name'], "$fotodir/$fotoname");
print "

Фото УСПЕШНО загружено: $fotoname (Размер: $fotosize байт)";}
else {exit("<B>Файл НЕ ЗАГРУЖЕН - ошибка СЕРВЕРА! Обратитесь к администратору!<B>");}

// Проверяем размер фото. Если "габариты" меньше 100 х 100 - то ничего с ним не делаем
$size = getimagesize("$fotodir/$foto");

// блок делает мальное изображение исходной фотки - в качестве превьюшки
$smallfoto="$foto";
if ($size[0]>100 or $size[1]>100) { $smallfoto="sm-$foto";
if (img_resize("$fotodir/$foto", "$fotodir/$smallfoto", 150, 120)) echo 'Изображение масштабировано успешно'; else echo 'Масштабирование невозможно - ошибка на хостинге!';
}
} else $smallfoto="";
$allfotoname.="$filename|";

/// Конец блока добавления ФОТО

Re: Как сделать на три фото ?

Добавлено: 01 апр 2014, 13:07
Хыиуду
И где в этом коде хоть что-то про второй и третий файл?

Re: Как сделать на три фото ?

Добавлено: 01 апр 2014, 13:53
Сионист
Ты не понял, это фича: ограничить закачку ровно одним файлом и потом ругаться на то, что php не умеет догадываться.

Re: Как сделать на три фото ?

Добавлено: 01 апр 2014, 16:39
ROM710
Так вот и я ж хочу понять где прописать и как про второй и третий фото ?

Re: Как сделать на три фото ?

Добавлено: 01 апр 2014, 17:43
Хыиуду
Рекомендую повторить все, начиная с $filename=$_FILES["file1"]['name']; // определяем имя ЗАГРУЖАЕМОГО файла
Только для $_FILES['file2'] и $_FILES['file3']

Re: Как сделать на три фото ?

Добавлено: 02 апр 2014, 13:15
ROM710
Вот задача, знать бы - разрешима она ? Я уже сколько вариантов перебрал, прикрепляет либо первую, либо третью, либо вообще пишет ошибку и все. Вот код еще раз переделанный, что не так подскажите ? Доска без БД, на файлах, я думаю может переделать ? $foto=""; $fotoksize=""; $size[0]=""; $size[1]="";
/// Добавляем ФОТО к объявлению!
if ($fotoadd==TRUE) { if (isset($_COOKIE['wrbcookies']) or $fotoaddany==TRUE) {

$allfotoname="";

$filename=$_FILES["file1"]['name']; // определяем имя ЗАГРУЖАЕМОГО файла

$filename=$_FILES["file2"]['name']; // определяем имя ЗАГРУЖАЕМОГО файла

$filename=$_FILES["file3"]['name']; // определяем имя ЗАГРУЖАЕМОГО файла

$fotoname=$_FILES["file1"]['name']; // определяем имя файла
$foto=$fotoname;

$fotoname=$_FILES["file2"]['name']; // определяем имя файла
$foto=$fotoname;

$fotoname=$_FILES["file3"]['name']; // определяем имя файла
$foto=$fotoname;

$fotosize=$_FILES["file1"]['size']; // Запоминаем размер файла

$fotosize=$_FILES["file2"]['size']; // Запоминаем размер файла

$fotosize=$_FILES["file3"]['size']; // Запоминаем размер файла

// проверяем расширение файла
$valid_types = array("gif","jpg","png","jpeg"); // допустимые расширения
$ext = strtolower(substr($fotoname, 1 + strrpos($fotoname, ".")));
if (!in_array($ext, $valid_types)) {echo '<B>ФАЙЛ НЕ загружен.</B> Возможные причины:

- разрешена загрузка только файлов с такими расширениями: gif, jpg, jpeg, png

- Вы пытаетесь загрузить не графический файл;

- неверно введён адрес или выбран файл;</B>
'; exit;}


// ЗАЩИТЫ от ВЗЛОМА (ФОТО)

// 1. считаем кол-во точек в выражении - если большей одной - СВОБОДЕН!
$findtchka=substr_count($fotoname, "."); if ($findtchka>1) {echo "ТОЧКА встречается в имени файла $findtchka раз(а). Это ЗАПРЕЩЕНО!
\r\n";}

// 2. если в имени есть .php, .html, .htm - свободен!
$bago="Извините. В имени ФАйла <B>запрещено</B> использовать .php, .html, .htm";
if (preg_match("/\.php/i",$fotoname)) {echo "Вхождение <B>\".php\"</B> найдено. $bago"; exit;}
if (preg_match("/\.html/i",$fotoname)) {echo "Вхождение <B>\".html\"</B> найдено. $bago"; exit;}
if (preg_match("/\.htm/i",$fotoname)) {echo "Вхождение <B>\".htm\"</B> найдено. $bago"; exit;}

// 3.

// 4. Проверяем, может быть файл с таким именем уже есть на сервере
if (file_exists("$fotodir/$foto")) {exit("Файл с таким именем уже существует на сервере! Измините имя на другое!");}
// Конец защит по имени файла

$fotoksize=round($fotosize/10.24)/100; // размер ЗАГРУЖАЕМОГО ФОТО в Кб.
$fotomax=round($max_file_size/10.24)/100; // максимальный размер фото в Кб.
if ($fotoksize>$fotomax) {exit("Вы превысили допустимый размер фото!
<B>Максимально допустимый</B> размер фото: <B>$fotomax </B>Кб.
<B>Вы пытаетесь</B> загрузить изображение: <B>$fotoksize</B> Кб!");}

if ($fotosize>"0" and $fotosize<$max_file_size) {
copy($_FILES["file1"]['tmp_name'], "$fotodir/$fotoname");
print "

Фото УСПЕШНО загружено: $fotoname (Размер: $fotosize байт)";}
else {exit("<B>Файл НЕ ЗАГРУЖЕН - ошибка СЕРВЕРА! Обратитесь к администратору!<B>");}

// Проверяем размер фото. Если "габариты" меньше 100 х 100 - то ничего с ним не делаем
$size = getimagesize("$fotodir/$foto");

// блок делает мальное изображение исходной фотки - в качестве превьюшки
$smallfoto="$foto";
if ($size[0]>100 or $size[1]>100) { $smallfoto="sm-$foto";
if (img_resize("$fotodir/$foto", "$fotodir/$smallfoto", 150, 120)) echo 'Изображение масштабировано успешно'; else echo 'Масштабирование невозможно - ошибка на хостинге!';
}
} else $smallfoto="";
$allfotoname.="$filename|";

/// Конец блока добавления ФОТО

Re: Как сделать на три фото ?

Добавлено: 02 апр 2014, 13:20
ROM710
И добавляет - if ($fotoadd==TRUE) { if (isset($_COOKIE['wrbcookies']) or $fotoaddany==TRUE) {
$maxfile=round($max_file_size/10.24)/100;
print"<TR class=row1><TD>Прикрепить фото:
(допустимые типы: gif, jpg, png,
размер менее $maxfile Кб.)</TD><TD>
<FONT color=#ff0000>*</FONT><input type=file size=50 class=maxiinput name=file1>

<FONT color=#ff0000>* Фото будет масштабировано до разрешения
145 х 120 для отображения в рубрикаторе</FONT>

</TD></TR>"; } }

if ($fotoadd==TRUE) { if (isset($_COOKIE['wrbcookies']) or $fotoaddany==TRUE) {
$maxfile=round($max_file_size/10.24)/100;
print"<TR class=row1><TD>Прикрепить фото:
(допустимые типы: gif, jpg, png,
размер менее $maxfile Кб.)</TD><TD>
<FONT color=#ff0000>*</FONT><input type=file size=50 class=maxiinput name=file2>

<FONT color=#ff0000>* Фото будет масштабировано до разрешения
145 х 120 для отображения в рубрикаторе</FONT>

</TD></TR>"; } }

if ($fotoadd==TRUE) { if (isset($_COOKIE['wrbcookies']) or $fotoaddany==TRUE) {
$maxfile=round($max_file_size/10.24)/100;
print"<TR class=row1><TD>Прикрепить фото:
(допустимые типы: gif, jpg, png,
размер менее $maxfile Кб.)</TD><TD>
<FONT color=#ff0000>*</FONT><input type=file size=50 class=maxiinput name=file3>

<FONT color=#ff0000>* Фото будет масштабировано до разрешения
145 х 120 для отображения в рубрикаторе</FONT>

</TD></TR>"; } }

echo'<TR class=row1><TD colspan=2 align=middle><INPUT class=longok type=submit value=Сохранить></TD></TR></FORM></TBODY></TABLE>';
}
}

Re: Как сделать на три фото ?

Добавлено: 02 апр 2014, 13:29
Duncon
Я плачу, почитай учебник какой для чайников по php что ли.. Копипаст бездумный никогда не работал и работать не будет..