Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Селективный ввод в форму...
 
 автор: serjinio   (18.04.2008 в 19:54)   письмо автору
 
 

Требуется ввод картинки используя форму....
Как отфильтровать нежелательные символы,а также все файлы кроме формата JPG
типо...
   <form method="post" name="form1" action=""enctype="multipart/form-data">
 Выбираем картинку: <br>
<input type="file" name="image">
<input type="submit" name="ok" value="Загрузить">
</form>  

 
if (isset($_POST['ok']))
{   
if(isset($_FILES['image']))
{
$file_name = $_FILES['image']; 
if (!ereg("image", $_FILES["image"]["type"])) // проверяем ввод в форму только файлов изображения
{
    echo "<p align='center' class='red'>Пустое поле в форме или загружаемый файл не является изображением!!! </p>";exit();
}

.......СКРИПТ обработки картинки.......

}
}
 

или


{
$file_name = $_FILES['image']; 
if ($file_name == '') // Если переменная пустая,  
{
unset($file_name);    // то уничтожаем переменную.
}
}



Как правильно, и как разрешить только файлы JPG ???

   
 
 автор: sim5   (18.04.2008 в 20:00)   письмо автору
 
   для: serjinio   (18.04.2008 в 19:54)
 

getimagesize()

   
 
 автор: Киналь   (18.04.2008 в 20:35)   письмо автору
 
   для: serjinio   (18.04.2008 в 19:54)
 

Проверяйте MIME-тип; каков он может быть у jpg-а - поищите в гугле, там есть целые списки соответствий формаотв и MIME-типов.

   
 
 автор: serjinio   (18.04.2008 в 23:12)   письмо автору
 
   для: Киналь   (18.04.2008 в 20:35)
 

    
$size_img=getimagesize($upfile);
    
    if($size_img[2]!==2)
{
echo "<p align='center' class='red'>Выбирайте только JPG формат </p>";exit();
}

Все работает,только как бы сделать эту проверку повыше..... перед функцией getimagesize()

   
 
 автор: sim5   (18.04.2008 в 23:43)   письмо автору
 
   для: serjinio   (18.04.2008 в 23:12)
 

Как вы сможет выполнить getimagesize() до загрузки файла на сервер? Пожалуйста, проверяйте $_FILES["image"]["type"], но это дает то, что прописано в соответсвующем атрибуте формы, что обмануть просто. Так что решайте или точно JPG, или верьте наслово.

   
 
 автор: Киналь   (19.04.2008 в 03:29)   письмо автору
 
   для: sim5   (18.04.2008 в 23:43)
 

Кстати, недавно выясняли (кажется, даже здесь), что и mime-тип файла можно подделать при желании.

   
 
 автор: sim5   (19.04.2008 в 10:24)   письмо автору
 
   для: Киналь   (19.04.2008 в 03:29)
 

Да что там подделывать, если $_FILES["image"]["type"] - то можно просто, ради шутки, столько мусора забросить на сервер. )

   
 
 автор: Киналь   (19.04.2008 в 11:22)   письмо автору
 
   для: sim5   (19.04.2008 в 10:24)
 

Да это-то понятно) Речь шла о файле уже на сервере. Хотя может и путаю чего.

   
 
 автор: Atheist   (19.04.2008 в 17:10)   письмо автору
 
   для: Киналь   (19.04.2008 в 03:29)
 

> Речь шла о файле уже на сервере

Что есть MIME-тип для сервера? Набор буковок. Для него все файлы - набор байт, который имеет имя и хранится в долговременной памяти. Все эти MIME придуманы для удобства пользователя. Чтобы он не искал программу сам, которая скорее всего предназначена для данного файла.
Между прочим, он нигде не записывается. Обычно тип определяют по расширению.

[поправлено модератором]

   
 
 автор: vitali   (20.04.2008 в 11:17)   письмо автору
 
   для: Atheist   (19.04.2008 в 17:10)
 

Для Atheist:
> ..... Между прочим, он нигде не записывается. Обычно тип определяют по расширению.
1) Что делает в unix-ах: file [OPTION] ....[FILE]..., с ключем -i, если не обрабатывает контекст файла? (аналогичная (по функциональности) ф-ция есть и в PHP, на вскидку сейчас не припомню)
2) Определаение типа файла по расширению - порочная практика.

   
 
 автор: serjinio   (20.04.2008 в 22:07)   письмо автору
 
   для: vitali   (20.04.2008 в 11:17)
 

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

   
 
 автор: sim5   (21.04.2008 в 01:11)   письмо автору
 
   для: serjinio   (20.04.2008 в 22:07)
 

getimagesize(), а далее согласно мануала:
Файлы будут по умолчанию сохраняться во временной директории по умолчанию на сервере, если только не задано другое место директивой upload_tmp_dir в php.ini. PHP-скрипт, который получает загружаемый файл, должен реализовывать логику, необходимую для определения того, что нужно сделать с загруженным файлом. При любой логике вы должны либо удалять, либо перемещать такие файлы из временной директории. Файл будет удалён из временной директории по окончании запроса, если он (файл) не перемещён или не переименован.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования