Приветствую
есть форма для загрузки картинки
задача: надо дапустить толко .gif картинки.
как правило, проверка происходит на сервере да? через функции getimagesize() или $_FILES['uploadfile']['type']
возникла такои вопрос: чем будит плохо, сделать ето с помошчю яваскрипт?
то есть берём значение input type file, обреазеам из него часть, после последного символа "." (точка), так получаем тип картинки да? проверяем и если тип не gif, то алерт("картинка вне гиф формате"). иначе загружаем фаил?
какои будит ваш совет/мнение геспада?
P.S. такои варянт: "браузер не подерживает/выключен яваскрипт", допустим нет проблема.
1. dadli - 26 Февраля, 2012 - 12:05:22 - перейти к сообщению
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 "загрузки файла непроизошло";
?>
на 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 "не плохо", то етот варянт будит гораздо бистрее чем варянт через пхп.
спасибо болшое за код,
![Улыбка Улыбка](./im/emoticons/smile24.gif)
Цитата:
зачем тебе js ?
потому что если варянт через js "не плохо", то етот варянт будит гораздо бистрее чем варянт через пхп.
4. imper - 26 Февраля, 2012 - 12:23:40 - перейти к сообщению
dadli пишет:
imper
спасибо болшое за код,
но дело втом:
потому что если варянт через js "не плохо", то етот варянт будит гораздо бистрее чем варянт через пхп.
спасибо болшое за код,
![Улыбка Улыбка](./im/emoticons/smile24.gif)
Цитата:
зачем тебе js ?
потому что если варянт через js "не плохо", то етот варянт будит гораздо бистрее чем варянт через пхп.
ну я в js не силён попробуй на форуме http://javascript[dot]ru/forum/ =-)
5. dadli - 26 Февраля, 2012 - 12:27:41 - перейти к сообщению
хорошо, и там буду спрашивать и здес буду ждать других ответов ![Улыбка Улыбка](./im/emoticons/smile24.gif)
спасибо вам imper
![Улыбка Улыбка](./im/emoticons/smile24.gif)
спасибо вам 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-валидация не должна исключать проверки всех приходящих данных от пользователя на сервере.
(Добавление)
вот http://habrahabr[dot]ru/blogs/php/44610/ почитайте про безопасность загрузки файлов.
А на Javascript проверки делать нужно, но только для того, чтобы сообщить пользователю об ошибке, не перезагружая страницу. js-валидация не должна исключать проверки всех приходящих данных от пользователя на сервере.
9. tuareg - 26 Февраля, 2012 - 13:26:18 - перейти к сообщению
Просто необходимо понимать, что только одна проверка Js не спасет(его можно тупо отключить.)
А так
находите значение value полю type='file'.
Выбираете 4 последние символа(как раз и будет расширение файла) и смотрите если все нормально то грузите файл а там снова проверяете его, если нет то сразу ошибка
А так
находите значение value полю type='file'.
Выбираете 4 последние символа(как раз и будет расширение файла) и смотрите если все нормально то грузите файл а там снова проверяете его, если нет то сразу ошибка
10. dadli - 26 Февраля, 2012 - 13:46:40 - перейти к сообщению
DelphinPRO
tuareg
спасибо болшое, и последни випрос:
js код, подключаемой через <script src="bla_bla_bla"></script> тоже может изменить юзер?
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> тоже может изменить юзер?
да
![Хорошо Хорошо](./im/emoticons/cool24.gif)
13. DelphinPRO - 26 Февраля, 2012 - 14:19:48 - перейти к сообщению
можно модифицировать все, что отдается клиенту. Приходящим от пользователя данным нельзя доверять априори.
14. dadli - 26 Февраля, 2012 - 14:22:19 - перейти к сообщению
хорошо ясно, спасибо болшое всем
![Улыбка Улыбка](./im/emoticons/smile24.gif)