[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по обработчику...
Dimiroff
Есть обработчик. В него нужно вставить проверку на тип загружаемого файла. Честно говоря хотелось бы переработать чтоб он загружал архивы(rar,zip), а не картинки. Помогите пожалуйста)
<?php

// Подключаемься к базе данных

require_once ("db.php");

//================Настройки============= //
$maxwidth = "300px"; // максимальная ширина картинок на превью
$fotos_dir = "fotos/"; // Директория для фотографий товаров
$foto_name = $fotos_dir.time()."_".basename($_FILES['myfile']['name']); // Полное имя файла вместе с путем
$foto_light_name = time()."_".basename($_FILES['myfile']['name']); // Имя файла исключая путь
$foto_tag = "<img src=\"$foto_name\" border=\"0\">"; // Готовый тэг для вставки картинки на страницу
$foto_tag_preview = "<img src=\"$foto_name\" border=\"0\" width=\"$maxwidth\">"; // Тот же тэг, но для превью

// Текст ошибок

$error_by_mysql = "<span style=\"font: bold 15px tahoma; color: red;\">Ошибка при добавлении данных в базу</span>";
$error_by_file = "<span style=\"font: bold 15px tahoma; color: red;\">Невозможно загрузить файл в директорию. Возможно её не существует</span>";



// Начало
if(isset($_FILES["myfile"]))
{
$myfile = $_FILES["myfile"]["tmp_name"];
$myfile_name = $_FILES["myfile"]["name"];
$myfile_size = $_FILES["myfile"]["size"];
$myfile_type = $_FILES["myfile"]["type"];
$error_flag = $_FILES["myfile"]["error"];

// Если ошибок не было
if($error_flag == 0)
{


$DOCUMENT_ROOT = $_SERVER['DOCMENT_ROOT'];
$upfile = getcwd()."\\fotos\\" . time()."_".basename($_FILES["myfile"]["name"]);
if ($_FILES['myfile']['tmp_name'])
{


//Если не удалось загрузить файл

if (!move_uploaded_file($_FILES['myfile']['tmp_name'], $upfile))
{
echo "$error_by_file";
exit;
}

}

else
{
echo 'Проблема: возможна атака через загрузку файла. ';
echo $_FILES['myfile']['name'];
exit;
}


// После удачной обработки файла, выводим сообщение
echo "<h3>Результат добавления товара:</h3> <br />";
echo "<b>Файл успешно скопирован в директорию:</b> ".$fotos_dir." <br /><b>Имя файла:</b> ".$foto_light_name."<br />";
echo "<br /><small>Превью загруженной картинки:</small> <br />$foto_tag_preview<br /><br />";



// Заносим путь картинки в базу данных
$q = "INSERT INTO goods (foto) VALUES ('$foto_name')";
$query = mysql_query($q);


// Данные успешно внесены в базу данных, выводим сообщение
if ($query == 'true') {
echo "<br /><b>Данные успешно внесены в базу</b>";
}

// В противном случае, выводим ошибку при добавлении в базу данных
else {
echo "$error_by_mysql";

}

}


elseif ($myfile_size == 0) {
echo "Пустая форма!";
}


}


?>




Спустя 7 минут, 17 секунд (14.12.2010 - 22:50) kovaldm написал(а):
В чем проблема?

Спустя 2 часа, 19 минут, 7 секунд (15.12.2010 - 01:09) Dimiroff написал(а):
В него нужно вставить проверку на тип загружаемого файла.

Спустя 5 минут, 3 секунды (15.12.2010 - 01:14) Invis1ble написал(а):
сравнивай $_FILES["myfile"]["type"] с требуемыми расширениями - это самая простая проверка..
как-то так вроде бы...

Спустя 8 часов, 35 минут, 23 секунды (15.12.2010 - 09:50) linker написал(а):
Учимся пользоваться поиском, за полные сутки вторая подобная тема, вот ближайшая с ответом http://phpforum.ru/index.php?showtopic=37865&hl=

Спустя 14 часов, 3 минуты, 35 секунд (15.12.2010 - 23:53) Dimiroff написал(а):
Нада делать так? Я правильно понял?
Сначала заносим в переменную:
$formats = array('gif', 'jpg', 'png');

а потом присоединяем здесь:
$myfile_type = $_FILES["myfile"]["type"]=$formats;

Так? исправьте плиз)

Спустя 54 минуты, 18 секунд (16.12.2010 - 00:48) kovaldm написал(а):
Если уж сравнивать расширение, то так:
$myfile_type = $_FILES["myfile"]["type"];
if(in_array($myfile_type, $formats))
{
//твойкод
}

А лучше попробовать открыть архив, если откроется - значит пропускаем, если нет - до свидания. "А усы и подделать можно".

Спустя 2 дня, 1 час, 16 минут, 41 секунда (18.12.2010 - 02:04) Dimiroff написал(а):
Ребята, пожалуйста, напишите все целиком) Напишите может как лучше, очень надо...)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.