ОсновноеRadiotalkПользовательское
Программирование
6   •   Посмотреть все темы

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

 

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

7094
--- @Render
ROM710 пишет:

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

Давай-ка я попробую погадать на кофейной гуще за тебя.
Звёзды мне подсказывают, что причина в коде твоём.

16
ROM710 @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> Возможные причины:<BR>
- разрешена загрузка только файлов с такими расширениями: gif, jpg, jpeg, png<BR>
- Вы пытаетесь загрузить не графический файл;<BR>
- неверно введён адрес или выбран файл;</B><BR>'; exit;}


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

// 1. считаем кол-во точек в выражении - если большей одной - СВОБОДЕН!
$findtchka=substr_count($fotoname, "."); if ($findtchka>1) {echo "ТОЧКА встречается в имени файла $findtchka раз(а). Это ЗАПРЕЩЕНО! <BR>\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("Вы превысили допустимый размер фото! <BR><B>Максимально допустимый</B> размер фото: <B>$fotomax </B>Кб.<BR> <B>Вы пытаетесь</B> загрузить изображение: <B>$fotoksize</B> Кб!");}

if ($fotosize>"0" and $fotosize<$max_file_size) {
copy($_FILES["file1"]['tmp_name'], "$fotodir/$fotoname");
print "<br><br>Фото УСПЕШНО загружено: $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|";

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

2615
Сергей @Pegass
Код загрузки одного файла - связи с вопросом не вижу


что касается самого кода - я думал что у меня быдлокод - ошибался)))
особенно порадовали
exit("Файл с таким именем уже существует на сервере! Измините имя на другое!");
// 2. если в имени есть .php, .html, .htm - свободен!
// 1. считаем кол-во точек в выражении - если большей одной - СВОБОДЕН!

ну это ладно - поулыбался

а вот тут уже начался нервны тик от одной только мысли о файлах с именами вида "админ лох.jpg"

$fotoname=$_FILES["file1"]['name']; // определяем имя файла
бла бла бла
copy($_FILES["file1"]['tmp_name'], "$fotodir/$fotoname");

Отредактировано Pegass - 01.04.2014
16
ROM710 @ROM710
А по понятней можно ? так чтобы все таки решить проблему ?

7094
--- @Render
но прикрепляет только одно из трех фото, а две не работают, вчем причина может быть ?

В приведённом говнокоде коде не единого намёка на загрузку нескольких файлов - изображений.
**********

16
ROM710 @ROM710
Вот вторая его часть - if ($fotoadd==TRUE) { if (isset($_COOKIE['wrbcookies']) or $fotoaddany==TRUE) {
$maxfile=round($max_file_size/10.24)/100;
print"<TR class=row1><TD>Прикрепить фото:<BR>(допустимые типы: gif, jpg, png,<BR> размер менее $maxfile Кб.)</TD><TD>
<FONT color=#ff0000>*</FONT><input type=file size=50 class=maxiinput name=file1><br>
<FONT color=#ff0000>* Фото будет масштабировано до разрешения<br> 145 х 120 для отображения в рубрикаторе</FONT><br>
</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>Прикрепить фото:<BR>(допустимые типы: gif, jpg, png,<BR> размер менее $maxfile Кб.)</TD><TD>
<FONT color=#ff0000>*</FONT><input type=file size=50 class=maxiinput name=file1><br>
<FONT color=#ff0000>* Фото будет масштабировано до разрешения<br> 145 х 120 для отображения в рубрикаторе</FONT><br>
</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>Прикрепить фото:<BR>(допустимые типы: gif, jpg, png,<BR> размер менее $maxfile Кб.)</TD><TD>
<FONT color=#ff0000>*</FONT><input type=file size=50 class=maxiinput name=file1><br>
<FONT color=#ff0000>* Фото будет масштабировано до разрешения<br> 145 х 120 для отображения в рубрикаторе</FONT><br>
</TD></TR>"; } }

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





if (is_file("$brdskin/bottom.html")) include "$brdskin/bottom.html";

7094
--- @Render
ROM710, во всех input name=file1, не смущает это?
Вообще, если делать по нормальному мультизагрузку, то достаточного одного input с name=file[]
И затем уже в коде перебирать массив file[]

16
ROM710 @ROM710
Мне то же больше нравится один input с name=file[] , но я пока не могу так, надо хоть этот доделать, а потом буду улучшать в свободное время. Вот задача, знать бы - разрешима она ? Я уже сколько вариантов перебрал, прикрепляет либо первую, либо третью, либо вообще пишет ошибку и все. Вот код еще раз переделанный, что не так подскажите ? Доска без БД, на файлах, я думаю может переделать ? $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> Возможные причины:<BR>
- разрешена загрузка только файлов с такими расширениями: gif, jpg, jpeg, png<BR>
- Вы пытаетесь загрузить не графический файл;<BR>
- неверно введён адрес или выбран файл;</B><BR>'; exit;}


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

// 1. считаем кол-во точек в выражении - если большей одной - СВОБОДЕН!
$findtchka=substr_count($fotoname, "."); if ($findtchka>1) {echo "ТОЧКА встречается в имени файла $findtchka раз(а). Это ЗАПРЕЩЕНО! <BR>\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("Вы превысили допустимый размер фото! <BR><B>Максимально допустимый</B> размер фото: <B>$fotomax </B>Кб.<BR> <B>Вы пытаетесь</B> загрузить изображение: <B>$fotoksize</B> Кб!");}

if ($fotosize>"0" and $fotosize<$max_file_size) {
copy($_FILES["file1"]['tmp_name'], "$fotodir/$fotoname");
print "<br><br>Фото УСПЕШНО загружено: $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|";

/// Конец блока добавления ФОТО
if ($fotoadd==TRUE) { if (isset($_COOKIE['wrbcookies']) or $fotoaddany==TRUE) {
$maxfile=round($max_file_size/10.24)/100;
print"<TR class=row1><TD>Прикрепить фото:<BR>(допустимые типы: gif, jpg, png,<BR> размер менее $maxfile Кб.)</TD><TD>
<FONT color=#ff0000>*</FONT><input type=file size=50 class=maxiinput name=file1><br>
<FONT color=#ff0000>* Фото будет масштабировано до разрешения<br> 145 х 120 для отображения в рубрикаторе</FONT><br>
</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>Прикрепить фото:<BR>(допустимые типы: gif, jpg, png,<BR> размер менее $maxfile Кб.)</TD><TD>
<FONT color=#ff0000>*</FONT><input type=file size=50 class=maxiinput name=file2><br>
<FONT color=#ff0000>* Фото будет масштабировано до разрешения<br> 145 х 120 для отображения в рубрикаторе</FONT><br>
</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>Прикрепить фото:<BR>(допустимые типы: gif, jpg, png,<BR> размер менее $maxfile Кб.)</TD><TD>
<FONT color=#ff0000>*</FONT><input type=file size=50 class=maxiinput name=file3><br>
<FONT color=#ff0000>* Фото будет масштабировано до разрешения<br> 145 х 120 для отображения в рубрикаторе</FONT><br>
</TD></TR>"; } }

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

7094
--- @Render
$filename
$fotoname
Во всех случаях, в приведённом коде, перезаписывается значение этих переменных -_\

Если и делать таким образом (несколько input с разными переменными file1,2,3) то тогда как-то так:

<form action= method=post enctype=multipart/form-data>
<input type=file name=uploadfile1><br/>
<input type=file name=uploadfile2><br/>
<input type=submit value=Загрузить></form>

$uploaddir = './files/';
$uploadfile1 = $uploaddir.basename($_FILES['uploadfile1']['name']);
$uploadfile2 = $uploaddir.basename($_FILES['uploadfile2']['name']);
if (copy($_FILES['uploadfile1']['tmp_name'], $uploadfile1))
{
echo "Файл успешно загружен<br/>";
}
else { echo "<h3>Ошибка! Не удалось загрузить файл!</h3>"; exit; }
if (copy($_FILES['uploadfile2']['tmp_name'], $uploadfile2))
{
echo "Файл успешно загружен<br/>";
}
else { echo "<h3>Ошибка! Не удалось загрузить файл!</h3>"; exit; }
echo "<h3>Информация о загруженных файлах: </h3>";
echo "Имя файла: ".$_FILES['uploadfile1']['name']."<br/>";
echo "Размер загруженного файла в байтах: ".$_FILES['uploadfile1']['size']."<br/>";
echo "Имя файла: ".$_FILES['uploadfile2']['name']."<br/>";
echo "Размер загруженного файла в байтах: ".$_FILES['uploadfile2']['size']."<br/>";

16
ROM710 @ROM710
Нет не подходит - совсем глючит.

16
ROM710 @ROM710
Нашел хороший код в интернете, мне такой в самый раз. Запустить не получается, подскажите пожалуйста. код - <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Загрузка изображений</title>
<script>
function xdropFile(btn)
{
if(document.getElementById)
{
tr = btn;
while (tr.tagName != 'TR') tr = tr.parentNode;
tr.parentNode.removeChild(tr);
checkForLast();
}
}

function xaddFile(btn)
{
if(document.getElementById)
{
tr = btn;
while (tr.tagName != 'TR') tr = tr.parentNode;
var idSuffix = Math.round(Math.random()*1000);
var newTr = tr.parentNode.insertBefore(tr.cloneNode(true),tr.nextSibling);
thisChilds = newTr.getElementsByTagName('td');
for (var i = 0; i < thisChilds.length; i++)
{
if (thisChilds[i].className == 'header') thisChilds[i].innerHTML = '';
if (thisChilds[i].className == 'files') thisChilds[i].innerHTML = '<input size="32" name="xtt[]" class="wideFile" type="file">';
}
checkForLast();
}
}

function checkForLast()
{
btns = document.getElementsByName('xdrop');
for (i = 0; i < btns.length; i++)
{
btns[i].disabled = (btns.length == 1) ? true : false;
}
}
</script>
</head>

<body>

<form action="obrabotka.php" method="post" name="form" ENCTYPE="multipart/form-data" align="center">
<table width=20% align=center>
<tr>
<td width="20%"><input type="file" size="32" name="xtt[]"></td>
<td nowrap="nowrap">
<input type="button" name="xdrop" value=" &minus;" onClick="xdropFile(this);">
<input type="button" value=" + " onClick="xaddFile(this);">
</td>
</tr>
</table>
<input name="" type="submit">
</form>

</body>
</html> и обработка - DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Документ без названия</title>
</head>

<body>

<?

for($i=0;$i<count($_FILES['xtt']['name']);$i++)
{
$uploaddir = 'foto/';
$uploadfile = $uploaddir . basename($_FILES['xtt']['name'][$i]);

if (move_uploaded_file($_FILES['xtt']['tmp_name'][$i], $uploadfile))
{ echo "Изображение №".$i." УСПЕШНО загружено.\n<br>";}
else { echo "Изображение №".$i." НЕ ЗАГРУЖЕНО!\n<br>";}
}

?>

</body>
</html>

20089
16
ROM710 @ROM710
********** это самоучитель ? скачал вроде Русскую версию , все равно все по Английски.

20089
Dimitry @Dimitry
Это документация по PHP

**********

16
ROM710 @ROM710
Понял, спасибо большое.