Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: загрузка фаилов на сервере, проверка тип фаила
Форумы портала PHP.SU » » Вопросы новичков » загрузка фаилов на сервере, проверка тип фаила

Страниц (1): [1]
 

1. dadli - 26 Февраля, 2012 - 12:05:22 - перейти к сообщению
Приветствую

есть форма для загрузки картинки
задача: надо дапустить толко .gif картинки.

как правило, проверка происходит на сервере да? через функции getimagesize() или $_FILES['uploadfile']['type']
возникла такои вопрос: чем будит плохо, сделать ето с помошчю яваскрипт?
то есть берём значение input type file, обреазеам из него часть, после последного символа "." (точка), так получаем тип картинки да? проверяем и если тип не gif, то алерт("картинка вне гиф формате"). иначе загружаем фаил?
какои будит ваш совет/мнение геспада?

P.S. такои варянт: "браузер не подерживает/выключен яваскрипт", допустим нет проблема.
2. imper - 26 Февраля, 2012 - 12:13:42 - перейти к сообщению
зачем тебе js ?
на php не очень большой код будет
<?php
if ($_FILES)
{
$name=$_FILES['filename']['name'];
switch ($_FILES['filename']['type'])
{
case 'image/gif' : $ext='gif'; break; //вот только гиф тебе хочешь ещё что нидь добавить просто пропишешь к примеру case 'image/jpg' : $ext='jpg'; break;
default: $ext=''; break;
}
if($ext)
{
$n="image.$ext";
move_uploaded_file($_FILES['filename']['tmp_name'],$n);
echo "загружено изображение '$name' под именем '$n':<br />";
}
else echo "'$name' неприемлемый файл изображения";
}
else echo "загрузки файла непроизошло";
?>
3. dadli - 26 Февраля, 2012 - 12:19:51 - перейти к сообщению
imper
спасибо болшое за код, Улыбка но дело втом:
Цитата:
зачем тебе js ?

потому что если варянт через js "не плохо", то етот варянт будит гораздо бистрее чем варянт через пхп.
4. imper - 26 Февраля, 2012 - 12:23:40 - перейти к сообщению
dadli пишет:
imper
спасибо болшое за код, Улыбка но дело втом:
Цитата:
зачем тебе js ?

потому что если варянт через js "не плохо", то етот варянт будит гораздо бистрее чем варянт через пхп.


ну я в js не силён попробуй на форуме http://javascript[dot]ru/forum/ =-)
5. dadli - 26 Февраля, 2012 - 12:27:41 - перейти к сообщению
хорошо, и там буду спрашивать и здес буду ждать других ответов Улыбка
спасибо вам imper
6. DelphinPRO - 26 Февраля, 2012 - 12:59:53 - перейти к сообщению
dadli пишет:
чем будит плохо, сделать ето с помошчю яваскрипт?

Тем что javascript доступен пользователю. Я, имея злой умысел, запросто могу подкорректировать вашу функцию проверки на javascript'e и отправить любой файл.
7. dadli - 26 Февраля, 2012 - 13:08:13 - перейти к сообщению
DelphinPRO
можете сказать как можно подкорректировать функции от старани ползователя? или дать ссилку где об етом написано?
8. DelphinPRO - 26 Февраля, 2012 - 13:21:50 - перейти к сообщению
в firebug в лисе или dragonfly в опере легко позволяют модифицировать любой клиентский код
(Добавление)
вот http://habrahabr[dot]ru/blogs/php/44610/ почитайте про безопасность загрузки файлов.

А на Javascript проверки делать нужно, но только для того, чтобы сообщить пользователю об ошибке, не перезагружая страницу. js-валидация не должна исключать проверки всех приходящих данных от пользователя на сервере.
9. tuareg - 26 Февраля, 2012 - 13:26:18 - перейти к сообщению
Просто необходимо понимать, что только одна проверка Js не спасет(его можно тупо отключить.)
А так
находите значение value полю type='file'.
Выбираете 4 последние символа(как раз и будет расширение файла) и смотрите если все нормально то грузите файл а там снова проверяете его, если нет то сразу ошибка
10. dadli - 26 Февраля, 2012 - 13:46:40 - перейти к сообщению
DelphinPRO
tuareg
спасибо болшое, и последни випрос:
js код, подключаемой через <script src="bla_bla_bla"></script> тоже может изменить юзер?
11. tuareg - 26 Февраля, 2012 - 13:56:06 - перейти к сообщению
Я не очень понял, что имел ввиду DelphinPRO. Но пользователь может сохранить всю страницу на своем компе, изменить ее что надо дописать или убрать. И запустить ее с локальной машины. и выполнить что там надо
12. illy - 26 Февраля, 2012 - 14:03:22 - перейти к сообщению
dadli пишет:
js код, подключаемой через <script src="bla_bla_bla"></script> тоже может изменить юзер?

да Хорошо
13. DelphinPRO - 26 Февраля, 2012 - 14:19:48 - перейти к сообщению
можно модифицировать все, что отдается клиенту. Приходящим от пользователя данным нельзя доверять априори.
14. dadli - 26 Февраля, 2012 - 14:22:19 - перейти к сообщению
хорошо ясно, спасибо болшое всем Улыбка

 

Powered by ExBB FM 1.0 RC1