Перейти к содержимому


- - - - -

[JS] Обработчик


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1 konan

konan
  • Консультант

  • Пользователь
  • 675 сообщений
  • Пол:Мужчина
  • Город:Солнцево

Отправлено 10.05.2007 - 10:52

Есть форма для добавления данных в базу и есть Java script, который тормозит передачу данных обработчику.
<script language='javascript' type='text/javascript'>
				 function submit_for() {
						 var form = document.uinfo;
   if (form.prodname.value.length < 3) {
								 alert( 'Пожалуйста, напишите название.' );
						 }else if  (form.des.value.length < 5) {
								 alert( 'Пожалуйста, укажите описание.' );
						 }else {
								 form.submit();
						 }
					 }
					  </script>
Вот возник вопрос, а можно сделать, чтоб данный скрипт распознавал расширение файла в поле ввода типа file, а конкретно интересует такие расширения: jpg, png, gif. Грубо говоря, когда указывают путь к файлу на компьютере обрабатывались только эти расширения файла и ни какие другие! (JPG, JPEG, jpg, jpeg, PNG, png, GIF, gif)

Если, допустим, указать ему «C:\Documents and Settings\my files\test.txt» выдавал сообщение: «Недопустимое расширение файла!» А если указать: «C:\Documents and Settings\my files\test.jpg», то форма передавалась обработчику.

Ну и другие расширения из разрешенных (см. выше).

Жду ответа желательно в доступной форме.

P.S. Надеюсь выразился доходчиво и понятно. :)

#2 snake

snake
  • Консультант

  • Пользователь
  • 897 сообщений
  • Пол:Мужчина
  • Город:msk-&gt;Черемушки
  • Интересы:delphi, php, tcp/ip =)

Отправлено 14.05.2007 - 11:38

я не понимаю целесообразность такого решения... я вполне могу сохранить изображение в файл .txt и текст в .jpg oO

#3 konan

konan
  • Консультант

  • Пользователь
  • 675 сообщений
  • Пол:Мужчина
  • Город:Солнцево

Отправлено 16.05.2007 - 14:45

Это почему же???
Обработчик обрабатывает ТОЛЬКО изображения создавая уменьшеную копию изображения и обрабатывает только gif,jpg,png. А посылать данные обработчику чтобы он выдавал сообщение: не допустимое расширение файла вот это не целисообразно! Если есть способ с помощью js затормозить передачу данных обработчику, то почему бы так и не сделать???

#4 Gastone

Gastone
  • Легенда форума

  • Доступ закрыт
  • 6 198 сообщений

Отправлено 16.05.2007 - 16:44

Разумеется, пользователя нужно ограничивать в возможностях сделать неправильный выбор. Однако, на сколько мне известно, через Javascript обратиться к COM-объектам нельзя. Проверять же тип файла по расшифровке его заголовка тоже верно, хотя и не всегда нужно.

Разве что, обратите внимание вот на такую строчку кода:
var oCDlg = new ActiveXObject("MsComDlg.CommonDialog");
  oCDLg.Filter =  "Documents|*.doc|Templates|*.dot|Text Files|*.txt" 
  oCDLg.ShowOpen();

А использовать можно попробовать уже в реальной форме как-то так:
<form action="" method=POST ENCTYPE="multipart/form-data" target=infofr>
 <input type="hidden" value="" name="dir">
 
 <input type="file" name="file1">
 <br><br>
  <input type="submit" value="Закачать">
 </form>


#5 Push_Ok

Push_Ok
  • Изучает местность

  • Пользователь
  • 52 сообщений
  • Пол:Мужчина

Отправлено 21.05.2007 - 02:01

ну наскоко мне известно активХ юзает токо ИЕ, и соответсвенно такой код бесполезен, и не будет работать в отличных от Ие браузерах.

А насчет проверки такой вообще в по окончанию имени (т.е по расширению) ее не имет смысл делать на стороне клиента (js)  по нескольким причинам
1. всегда можно подменить передаваемы данные т.е можно из jpg сделаьь txt и на оборот и ничего мне не помешает переименовать скажем perl/php/C файло переименовав его в jpg/png/ico и тд
2. есть довольной большой круг пользователей js у которых полностьют отключен т,е данные либо не передадуться дальше либо не выполниться провека
3. если на сервере в скрипте perl/php  не проверять референт то можно послать данные в обход твоей проверки js

Но еслти всетаки возникла необходимость проверять расшенение в input типа file то это можно сделать так
<form  >
<input onchange="typer(this);" type="file" id="FF" >
</form>
<script>
function typer(inputer)
{
var ss=inputer.value; //значение например /home/pushok/My_DOCS/temp/index.html
//далее находишь последнее вхождение . (точки ) и берешь начиная от этой позиции+1 и до strlen 
//это и будет твое расширение передашь управление своему обработчику который скаже если ошибка 
//в заполнении

}


#6 Gastone

Gastone
  • Легенда форума

  • Доступ закрыт
  • 6 198 сообщений

Отправлено 21.05.2007 - 12:57

Кто-то из сборщиков статистики проверял у кого JS выключен (в прошлом году). Оказалось, что у 99,3% он сключен. SpyLOG, что ли. Не помню.

#7 Push_Ok

Push_Ok
  • Изучает местность

  • Пользователь
  • 52 сообщений
  • Пол:Мужчина

Отправлено 23.05.2007 - 03:07

Значит я чет перепутал=) бывает
сам просто часто отключаю, наверно по себе посудил=)
~ОФФ

#8 Gastone

Gastone
  • Легенда форума

  • Доступ закрыт
  • 6 198 сообщений

Отправлено 23.05.2007 - 14:16

Да нет, все относительно верно. Отключают некоторые. Это либо тестировщики, либо кодеры, либо параноики. Первые двое отключают на время, чтобы проверить, потестить, позырить, сделать работу. Естественно, в момент сканирования они и подпадают под те малые проценты. В остальном, включено у большинства.

#9 varvar007

varvar007
  • Новичок

  • Новичок
  • 2 сообщений

Отправлено 24.05.2007 - 14:27

Push_Ok, а поподробней мона??? :)

#10 Push_Ok

Push_Ok
  • Изучает местность

  • Пользователь
  • 52 сообщений
  • Пол:Мужчина

Отправлено 28.05.2007 - 00:02

а куда уж подробнее=)?
тебе код написать чтоли? так не научишься=)
пару метородо класса string
	var j = string.lastIndexOf(","); //найдем позицию 
   var exst=string.substring(j + 1,3); //3 символа расширения т,е три символа после точки это и будет втой extension всмысле расширение

Добавлено: 28.05.2007 - 01:03

Просмотр сообщенияGastone (23.5.2007, 15:16) писал:

Да нет, все относительно верно. Отключают некоторые. Это либо тестировщики, либо кодеры, либо параноики. Первые двое отключают на время, чтобы проверить, потестить, позырить, сделать работу. Естественно, в момент сканирования они и подпадают под те малые проценты. В остальном, включено у большинства.
  а я кодер-параноик=)
~ОФф

#11 (Faust)

(Faust)
  • Знаток

  • Пользователь
  • 1 340 сообщений
  • Пол:Мужчина
  • Город:Нагатино
  • Интересы:Охота, IT, Web DEvelopment, Спорт (бары).

Отправлено 10.06.2007 - 10:48

Konan, совет, не пиши проверку на заполенение форм на JS, ее довольно просто обойти и ввести любые данные. Проверку поступаемых данных должен осуществлять сам обработчик, а не JS только.




Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей