Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2014, 09:30   #1
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 144
По умолчанию Форма подачи объявлений с фото не работает.

Здравствуйте, помогите у кого есть время и знание. Форма подачи объявлений не прикрепляет фото, в отдельности работают хорошо. Думаю что ошибка в этой части - $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. защищаем от РУССКИХ букв в имени файла и проверяем расширение файла
if (!preg_match("/^[a-z0-9\.\-_]+\.(jpg|jpeg|gif|png|)+$/is",$fotoname)) {exit("Запрещено использовать РУССКИЕ буквы в имени файла!");}
// 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|";
/// Конец блока добавления ФОТО <!DOCTYPE html PUBLIC >

<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.clone Node(true),tr.n extSibling);
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>
ROM710 вне форума Ответить с цитированием
Старый 07.04.2014, 09:31   #2
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 144
По умолчанию

ДА, еще есть обработка, но к ней притензий не должно быть, поскольку если вытащить код отдельно, фото загружает и пять и десять. Подскажите ножалуйста.
ROM710 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Требуется разработка программы для автоматической подачи объявлений на сайты. fine09 Фриланс 4 25.10.2013 16:02
Нужна пр-ма для скачивания базы объявлений с сайтов-досок объявлений fine09 Фриланс 1 17.09.2011 22:19
форма с выпадающими списками и фото 7vlad37 Microsoft Office Excel 2 01.04.2011 22:47
Требуется разработка программы для автоматической подачи объявлений на сайты. fine09 Фриланс 1 11.11.2009 09:12