| |
|
|
| | Требуется ввод картинки используя форму....
Как отфильтровать нежелательные символы,а также все файлы кроме формата 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 ??? | |
| |
|
|
| |
|
|
| |
для: serjinio
(18.04.2008 в 19:54)
| | | getimagesize() | |
| |
|
|
| |
|
|
| |
для: serjinio
(18.04.2008 в 19:54)
| | | Проверяйте MIME-тип; каков он может быть у jpg-а - поищите в гугле, там есть целые списки соответствий формаотв и MIME-типов. | |
| |
|
|
| |
|
|
| |
для: Киналь
(18.04.2008 в 20:35)
| | |
$size_img=getimagesize($upfile);
if($size_img[2]!==2)
{
echo "<p align='center' class='red'>Выбирайте только JPG формат </p>";exit();
}
|
Все работает,только как бы сделать эту проверку повыше..... перед функцией getimagesize() | |
| |
|
|
| |
|
|
| |
для: serjinio
(18.04.2008 в 23:12)
| | | Как вы сможет выполнить getimagesize() до загрузки файла на сервер? Пожалуйста, проверяйте $_FILES["image"]["type"], но это дает то, что прописано в соответсвующем атрибуте формы, что обмануть просто. Так что решайте или точно JPG, или верьте наслово. | |
| |
|
|
| |
|
|
| |
для: sim5
(18.04.2008 в 23:43)
| | | Кстати, недавно выясняли (кажется, даже здесь), что и mime-тип файла можно подделать при желании. | |
| |
|
|
| |
|
|
| |
для: Киналь
(19.04.2008 в 03:29)
| | | Да что там подделывать, если $_FILES["image"]["type"] - то можно просто, ради шутки, столько мусора забросить на сервер. ) | |
| |
|
|
| |
|
|
| |
для: sim5
(19.04.2008 в 10:24)
| | | Да это-то понятно) Речь шла о файле уже на сервере. Хотя может и путаю чего. | |
| |
|
|
| |
|
|
| |
для: Киналь
(19.04.2008 в 03:29)
| | | > Речь шла о файле уже на сервере
Что есть MIME-тип для сервера? Набор буковок. Для него все файлы - набор байт, который имеет имя и хранится в долговременной памяти. Все эти MIME придуманы для удобства пользователя. Чтобы он не искал программу сам, которая скорее всего предназначена для данного файла.
Между прочим, он нигде не записывается. Обычно тип определяют по расширению.
[поправлено модератором] | |
| |
|
|
| |
|
|
| |
для: Atheist
(19.04.2008 в 17:10)
| | | Для Atheist:
> ..... Между прочим, он нигде не записывается. Обычно тип определяют по расширению.
1) Что делает в unix-ах: file [OPTION] ....[FILE]..., с ключем -i, если не обрабатывает контекст файла? (аналогичная (по функциональности) ф-ция есть и в PHP, на вскидку сейчас не припомню)
2) Определаение типа файла по расширению - порочная практика. | |
| |
|
|
| |
|
|
| |
для: vitali
(20.04.2008 в 11:17)
| | | Хорошо,а как страховаться при вводе картинки в форму пользователем....учитывая, что она затем ляжет на диск сервера.... | |
| |
|
|
| |
|
|
| |
для: serjinio
(20.04.2008 в 22:07)
| | | getimagesize(), а далее согласно мануала:
Файлы будут по умолчанию сохраняться во временной директории по умолчанию на сервере, если только не задано другое место директивой upload_tmp_dir в php.ini. PHP-скрипт, который получает загружаемый файл, должен реализовывать логику, необходимую для определения того, что нужно сделать с загруженным файлом. При любой логике вы должны либо удалять, либо перемещать такие файлы из временной директории. Файл будет удалён из временной директории по окончании запроса, если он (файл) не перемещён или не переименован. | |
| |
|
|