Обновить
159
Игорь Тарасов @itsoftread⁠-⁠only

Директор веб-студии и дата-центра ITSOFT

Отправить сообщение
А что же такого в переменных внутри строки? Вот framework.zend.com/manual/1.12/ru/coding-standard.coding-style.html тут это не возбраняется. Не sprintf же использовать.

Как старый сионист фигурные скобки не признаю для одной строки if-else.

А как с ней красиво то работают сейчас? Каждый тут волен использовать свои классы или библиотеки. Такая работа с БД в большинстве примеров на php.net и прочей документации.

А в чем не ахти?

Тут кода то почти нет.
Сами подключали? ЯД в этом году интерфейс поменял.

Все подключается, вопрос только сколько времени нужно человеку, который это делает в первый раз.
Сейчас я подключу и за 30 минут это. Но без вот этой инструкции это заняло сильно больше времени.

В данном случае, этим значениям можно доверять, т.к. выше была проверка

if(sha1($str)!=$_POST['sha1_hash'])
return mail('igor@itsoft.ru', 'Fake notification', $message);

И был запрос к Яндексу. Для того, чтобы эти проверки обойти нужно:
1. знать секретный код
2. каким-то образом вставить данные в БД Яндекса

Все эти значения числовые. Вряд ли Яндекс в них пришлет кавычку.

Но для полной уверенности можно их конечно и профильтровать. Хотя у нас на сервере стоит автоматическая фильтрация переменных.
Уважаемый So1!

1. Мне все равно дадут мне денег или нет, просто кошелек был в коде, вот я его и поставил, на то и смайлик в конце стоит. Во всяком случае так было принято писать в 90е, когда я активно работал программистом.

2. Если есть замечания по качеству кода, то их наверно имеет высказывать, а не агрессию. Уточните, пожалуйста, какой именно автолоад имеется в виду?

3. Моя компания в рекламе не нуждается. По всем профильным коммерческим запросам первые страницы в поисковиках. Заказов на месяцы вперед.

На то чтобы разобраться со всем, что описано выше, найти документацию, нагуглить ряд вопросов, интегрировать одно с другим, отладить у меня пара дней ушло. Возможно, я уже не очень хороший PHP-программист, я не претендую ни на что. Но за час 22 человека в избранное статью добавили, значит это все-таки кому-то надо. Если бы на Яндексе была подобная статься, то на прикрутку и отладку у меня ушло бы 1-2 часа времени.

С такими штрафами, я вообще не понимаю, как люди в это играют.

На конференции isdef.org был доклад по данной теме. То с чем IT-шники сталкиваются просто ужас, проще свалить наверно, чем работать тут на экспорт.

Государство должно поощрять экспорт IT-услуг. Не вечно же нефть экспортировать.
Сделал.

Атрибут data-type= Один из базовых типов: number, integer, negative, ip, login, password, phone, date, datetime, time, ogrn, inn,kpp, bik, bankaccount.
Для базовых типов уже заданы data-regexp, data-regexp-err-msg, data-enable-chars. Но вы можете переопредлить эти значения.

По ходу дела буду пополнять список. Сейчас значения определены в реализации itform.class.js так:
t['number'] = {regexp:"/^[0-9]*?\.?[0-9]+$/", errmsg:"Значение должно соответствовать формату числа с плавующей точкой.", enablechars: "/^[0-9+\-\.]$/"};
t['login'] = {regexp:"/^[a-z@\.-0-9]+$/i", errmsg:"Логин должен состоять из латинских букв, цифр, дефиса, точки, собачки. Другие символы использовать нельзя.", enablechars: "/^[a-zA-Z0-9\-_\.@]$/"};
t['password'] = {regexp:"/^\S+$/", errmsg:"Пароль не должен содержать пробелов и табуляций", enablechars: "/^\S$/"};
t['phone'] = {regexp:"/^[+()0-9 ,\-добext\.]+$/iu", errmsg:"Телефон нужно указывать в формате +7 (495) 988-3040.", enablechars: "/^[+()0-9 ,\-добext\.]$/iu"};
t['date'] = {regexp:"/^[12][7-90-3]\d\d-(?:0\d|1[0-2])-(?:[0-2]\d|3[01])$/", errmsg:"Дата должна быть в формате гггг-мм-дд", enablechars: "/^[0-9\-]$/"};
t['datetime'] = {regexp:"/^[12][7-90-3]\d\d-(?:0\d|1[0-2])-(?:[0-2]\d|3[01]) (?:[01]\d|2[0-3]):[0-5][0-9]:[0-5][0-9]$/", errmsg:"Дата должна быть в формате гггг-мм-дд чч:мм:сс", enablechars: "/^[ 0-9\-:]$/"};
t['time'] = {regexp:"/^(?:[01]\d|2[0-3]):[0-5][0-9]:[0-5][0-9]$/", errmsg:"Время должно быть в формате чч:мм:сс", enablechars: "/^[0-9:]$/"};
t['integer'] = {regexp:"/^-?\d+$/", errmsg:"Целое число может состоять из знака минус и цифр.", enablechars: "/^[0-9\-]$/"};
t['unsigned'] = {regexp:"/^\d+$/", errmsg:"Целое неотрицательное число может состоять только из цифр.", enablechars: "/^[0-9]$/"};
t['bankaccount'] = {regexp:"/^\d{20}$/", errmsg:"Двадцать цифр должно быть без каких-либо разделителей.", enablechars: "/^[0-9]$/"};
t['negative'] = {regexp:"/^-\d+$/", errmsg:"Целое отрицательное число должно состоять из знака минус и цифр.", enablechars: "/^[0-9\-]$/"};
t['ip'] = {regexp:"/^[0-9%\.]+$/", errmsg:"IP должен иметь формат 192.168.1.%", enablechars: "/^[0-9%\.]$/"};
t['inn'] = {regexp:"/^\d{10}(\d\d){0,1}$/", errmsg:"ИНН организации должно состоять из 10 цифр, индивидуального предпринимателя -- из 12 цифр.", enablechars: "/^\d$/"};
t['kpp'] = {regexp:"/^\d{9}$/", errmsg:"КПП должно быть из 9 цифр.", enablechars: "/^\d$/"};
t['ogrn'] = {regexp:"/^\d{13}(\d\d){0,1}$/", errmsg:"ОГРН - 13 цифр должен сожержать, ОГРН ИП -- 15.", enablechars: "/^\d$/"};
t['bik'] = {regexp:"/^\d{9}$/", errmsg:"БИК должен содержать 9 цифр.", enablechars: "/^\d$/"};
Только что поправил на сайте itforms.ru что-то меня прям проглючило. Быстро пишу. Спасибо!
Да, именно так. И не только.

Тут еще и проблема в том, что нам нужно все эти процессы контролировать изнутри процесса. Когда у нас есть исходный код itforms.class.js, то мы легко может его дополнить в любом месте и сделать то, что нам нужно. А когда часть кода или алгоритма закрыты, то у нас сужаются возможности для маневра.
Желание хорошее, но сходу решения не вижу простого.

Дело в том, что есть общий алгоритм работы. И как его изменить в этом конкретном случае непонятно. И библиотеку ITForms на все частные случаи тоже не дело расширять, т.к. у ней уже 20Кб кода.

Единственный вариант прямой с точки зрения кода и всей архитектуры, это не задавать параметр data-regexp для поля ИНН.
А определить свою функцию data-user-func и вот в ней уже написать свою проверку по указанному выше алгоритму.
Важное дополнение!

1. Всем еще раз большое спасибо за замечания, многие я уже реализовал. На очереди введение базовых типов.

2. Большая просьба посмотреть исходный код itforms.class.js Есть там некоторые косяки с именованием переменных и методов, где-то стиль общий нарушен, где-то я не подобрал хорошего имени. По стилю расстановок скобок, табуляций вместо пробелов и т.п. спорить не буду, о вкусах смысла спорить нет, а вот если будут замечания по делу, буду рад. Вполне могут обнаружиться ляпы, баги.

В планах есть добавление языков. Но сначала хочется алгоритм отладить, чтобы код не загромождать.

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

Значения атрибутов могут читать и использовать не только методы ITForms, но и вполне сторонние разработчики.
И подавляющее большинство при написании кода на JS использует. а не, для чисел.
Желание законное, но сделать такую работу мне не под силу.

Браузеров вагон и маленькая тележка с учетом их версий, постоянно новые выходят. Постоянно в них что-то новое.

Автоматически понять что и как именно поддерживает браузер не очень понятно как. Один и тот же параметр два браузера могут реализовывать несколько по-разному.

Так что по-моему это очень трудоемкая работа. И если посмотреть на все инструменты валидации HTML-форм, то такого ни у кого нет.
Не zForms тормозит, а сама проверка AJAX'ом. Человек пишет со скорость 10 символов в секунду скажем, а проверка КАПТЧИ требует 0.5 секунды, например. Вот и получается, что нельзя КАПТЧУ проверять по onKeyup

А по-другому zForms не умеет.
onclick=«return {jz:{heedChanges:false,preventSubmit:false}}»

input value="" class=«jz jz-number» id=«input-number» name=«number» onclick=«return {jz:{placeholder:'number',focusOnInit:true,allowNegative:true,allowFloat:true,required:{fn:function(widget) { return widget.getValue() > 10 }}}}»

Код не вставился. Это то что не читаемо.
Беглый анализ показывает, что синтаксис там zForms, т.е. по факту нам навязывают лишнии теги dt dl

Как я уже писал выше, построение в сетку таблицы элементов задача там не тривиальная. Если надо ширину задавать в процентах и форма должна масштабироваться вместе с окном браузера.

Отдельные элементы dl просто разлетаются, как показал опыт. А обертывание в таблицу получается громоздким.

— нечитабельно и непонятно

/> — это ужас. Нечитаемо.

Дальше круче, но смысла не вижу.

Хотя опять, есть люди наверно, которым такой синаксис больше по душе. В свое время в 90х были люди отрицающие ООП, были даже те, кто язык Си отрицал, мотивируя, что все на АСМе надо писать или в машинных кодах.
Да? То-то у нас были коды трехэтажные.

Попробуйте там выстроить ровно в сетку произвольные элементы с произвольными данными. Там жесткая структура dd dt dl очень все портила.

Там с комбооксом баг даже когда он при раскрытии налетает на нижний элемент.

КАПТЧУ там нереально проверять, т.к. все проверки идут по onKeyup. AJAX тормозит, в результате буквы не вводятся.

Мы год пользовались zForms пока не пришли к мнению, что от него необходимо отказаться из-за ряда нерешаемых проблем.
Зачем? Чтобы утонуть в версиях браузеров и их совместимостями со стандартами?

Проблемы не понимаю. Тут дело выбора уже и кому что больше нравится. Кто-то выберет HTML5, кто-то jQuery Validate или еще что-то, а кто-то выберет возможно ITForms, например, потому что проект живой, можно обсуждать и попросить что-то улучшить на русском языке, что немаловажно.

Все правильно. Проекты разные, границы применимости того или иного решения всегда существуют.

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

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность