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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Валидация большого количества полей

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: клиент-серверное решение
Zuldek
Отправлено: 28 Мая, 2014 - 10:07:01
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Доброго времени суток. Думаю, что тему можно отнести в этот раздел.

В проекте есть формы, содержащие значительное количество (в среднем 30-40) полей разного типа.

Задача в оптимальной с позиции затрат ресурсов и удобства пользователя валидации значений. На клиенте используется сокращённый jquery.validate.

Типы фильтров:

    Обязательное поле
    Регулярное выражение
    Макисмальное значение
    Минимальное значение
    Маска (тож регулярка)


К полю можно передать текстовый комментарий к ошибке заполнения.

Поля вместе с фильтрами тянутся по ajax в json-формате при запросе формы определённого типа.

Проблема валидации значений форм уже поднималась обсуждалась.
В данном случае я сторонник делать все проверки на стороне клиента и уже потом делать всего одну проверку всех значений на стороне сервера.

Вопрос возник именно с оптимальным решением для проверки по регуляркам на клиенте.
Регулярки просто так передать в json нельзя. Посмотрев массу корявых функций кодирования регулярок под json решил использовать старый добрый Base64 и декодировать их на клиенте.

Как вы считаете, насколько оптимально это решение?

Есть-ли что-то поэлегантнее для кодирования регулярок и насколько с вашей точки зрения вообще целесообразно это делать на стороне клиента?

Учитывая что вопрос всё-таки касается моего огорода - решил что буду делать именно так в целях уменьшения количества запросов и операций не дешовых проверок по регуляркам на стороне сервера.

(Отредактировано автором: 28 Мая, 2014 - 10:18:23)

 
 Top
Мелкий Супермодератор
Отправлено: 28 Мая, 2014 - 10:32:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Zuldek пишет:
Регулярки просто так передать в json нельзя.

ммм, почему?


-----
PostgreSQL DBA
 
 Top
Zuldek
Отправлено: 28 Мая, 2014 - 10:36:49
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Мелкий пишет:
Zuldek пишет:
Регулярки просто так передать в json нельзя.

ммм, почему?


Передать-то конечно можно, но какбэ распарсить потом стандартными функциями JS не получится ибо в регулярках могут быть и есть символы используемые в разметке самого JSON.
Потому либо экранировать каждый такой символ и на клиенте чистить, либо base64.
По крайней мере только о таких вариантах думал.

(Отредактировано автором: 28 Мая, 2014 - 10:38:32)

 
 Top
Panoptik
Отправлено: 28 Мая, 2014 - 10:50:32
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




а разве json_encode не упаковывает (экранирует) все необходимые данные?


-----
Just do it
 
 Top
Zuldek
Отправлено: 28 Мая, 2014 - 11:10:31
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Должен.
Вот сейчас передал некодированную регулярку и экранировал:

CODE (htmlphp):
скопировать код в буфер обмена
  1. "useregexp":"^(\\d+)(?:[,\\.](\\d)(\\d)?)?\\d*$","mask":"JHsxfSwkezI6YDBgfSR7MzpgMGB9"}


Ранее как возникла ошибка в валидации и увидел что в шаблоне регулярки, просто взял и закодировал их.
Странно, попробуем все регулярные выражения в исходный вид вернуть и постараться вернуть ошибку.

upd. Интересно, ошибки нет. При этом json формируется не заранее а на лету по запросу. Так бы можно было предположить что была ошибка при записи ответа в бд... . И репозитория нету старого Недовольство, огорчение Подожду пока проявится.

(Отредактировано автором: 28 Мая, 2014 - 11:26:29)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB