nagovizin

Проверка введеных данных, валидация

Recommended Posts

Возникла необходимость проверять что вводят user_ы в объявлениях, на примере поля цена объясните новичку механизм.

Например мне надо чтобы при создании/редактировании выдавало сообщение что поле цена заполнено неверно если в поле введено число содержащее меньше 4 цифр. 

Например мне надо чтобы в определенном поле не вводили определенные слова, символы, ссылки и т.п. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Установите для позиции цены граничные значения, например от 1000 до 100000000 и пользователь не сможет ввести ничего кроме цифр в этом диапазоне.

Например: rules=Type:int,Min:1000,Max:100000000

или ограничиться минимумом rules=Type:int,Min:1000

type:int пропускает только целые числа

type:decimal пропускает дробные числа с разделителем дробной и целой частей в виде точки

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, nagovizin сказал:

 не пропускает ссылки в описании

Нет. Поле типа textarea режет всю разметку и оставляет только текст (кроме случая наличия параметра allow_htmltags). Поле типа textarea_editor сохраняет всю разметку, в том числе и ссылки. Промежуточного между ними нет даже с правилами валидации.

3 часа назад, nagovizin сказал:

и цифры в улице ( стоит автокомплит)

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 часов назад, Realtor сказал:

а если к примеру валидация на то чтобы вводились в поле только цифры

решение я предлагал выше, пользователи ничего кроме цифр не введут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
12 минуты назад, Chernetskiy сказал:

решение я предлагал выше, пользователи ничего кроме цифр не введут.

Немного не то. Например не прокатят номера документов, которые запросто могут начинаться с ведущих нулей. Т.е. значение запишется, но данные будут не совсем верные. Или например номера телефонов без префикса страны с кодом оператора, начинающимся на 0. Не знаю как в РФ, а в Украине наверное все сотовые начинаются именно с нуля в своей привычной записи и большинство кодов городов.

С новой версии будет rules в виде numerical под хранение числовых последовательностей с возможностью указания максимальной и минимальной длинны. Думаю часть потребностей такой тип охватит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 часов назад, abushyk сказал:

Немного не то. Например не прокатят номера документов, которые запросто могут начинаться с ведущих нулей. Т.е. значение запишется, но данные будут не совсем верные. Или например номера телефонов без префикса страны с кодом оператора, начинающимся на 0. Не знаю как в РФ, а в Украине наверное все сотовые начинаются именно с нуля в своей привычной записи и большинство кодов городов.

С новой версии будет rules в виде numerical под хранение числовых последовательностей с возможностью указания максимальной и минимальной длинны. Думаю часть потребностей такой тип охватит.

Константин, ветка начиналась с указания цены только в цифровом формате, понятное дело, что цена - "0" не нужна, пусть пишут что-то реальное. В ответе от этого и отталкиваюсь. :)

Realtor не говорит, в каких конкретно позициях ему необходима валидация, а мы как всегда в телепатов играем :).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нужно , чтобы например общая площадь, жилая площадь, площадь кухни , площадь земучастка вводились в поле только цифры , т.е. в поле не давало писать букв.значения, по типу поля price, но в поле могут быть и десятичные значения . Поэтому price не подходит 

У меня один пользователь сайта писал в поле площадь и 50 КВ.м. и 50 м2 и ему выдавало ошибку при сохранении "должно быть десятичное число" и он так и не понял , что не пропускает из за букв при сохранении. А нужно , чтобы при вводе в поле не разрешало вписывать букв.значения  

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
19 часов назад, Chernetskiy сказал:

решение я предлагал выше, пользователи ничего кроме цифр не введут.

В поле введут , но не даст сохранить

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
16 часов назад, Realtor сказал:

Нужно , чтобы например общая площадь, жилая площадь, площадь кухни , площадь земучастка вводились в поле только цифры , т.е. в поле не давало писать букв.значения, по типу поля price, но в поле могут быть и десятичные значения . Поэтому price не подходит 

У меня один пользователь сайта писал в поле площадь и 50 КВ.м. и 50 м2 и ему выдавало ошибку при сохранении "должно быть десятичное число" и он так и не понял , что не пропускает из за букв при сохранении. А нужно , чтобы при вводе в поле не разрешало вписывать букв.значения  

Я специально, для дебилов, при размещения объявления написал название позиций: "Площадь участка, сот.", "Прощадь общая, кв.м." и т.п., очевидно, что к числовому значению уже ничего дописывать не надо.

В отношении этажей/этажности и вовсе сделал селект-боксы, чтобы только выбирали: 

Для этажей: {-2~~подвал}{-1~~цоколь}{1~~1}{2~~2}{3~~3}{4~~4}{5~~5}{6~~6}{7~~7}{8~~8}{9~~9}{10~~10}{11~~11}{12~~12}{13~~13}{14~~14}{15~~15}{16~~16}{17~~17}{18~~18}{19~~19}{20~~20}{21~~21}{22~~22}{23~~23}{24~~24}{25~~25}

Для этажности: {1~~1}{2~~2}{3~~3}{4~~4}{5~~5}{6~~6}{7~~7}{8~~8}{9~~9}{10~~10}{11~~11}{12~~12}{13~~13}{14~~14}{15~~15}{16~~16}{17~~17}{18~~18}{19~~19}{20~~20}{21~~21}{22~~22}{23~~23}{24~~24}{25~~25}

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Chernetskiy сказал:

Я специально, для дебилов, при размещения объявления написал название позиций: "Площадь участка, сот.", "Прощадь общая, кв.м." и т.п., очевидно, что к числовому значению уже ничего дописывать не надо.

В отношении этажей/этажности и вовсе сделал селект-боксы, чтобы только выбирали: 

Для этажей: {-2~~подвал}{-1~~цоколь}{1~~1}{2~~2}{3~~3}{4~~4}{5~~5}{6~~6}{7~~7}{8~~8}{9~~9}{10~~10}{11~~11}{12~~12}{13~~13}{14~~14}{15~~15}{16~~16}{17~~17}{18~~18}{19~~19}{20~~20}{21~~21}{22~~22}{23~~23}{24~~24}{25~~25}

Для этажности: {1~~1}{2~~2}{3~~3}{4~~4}{5~~5}{6~~6}{7~~7}{8~~8}{9~~9}{10~~10}{11~~11}{12~~12}{13~~13}{14~~14}{15~~15}{16~~16}{17~~17}{18~~18}{19~~19}{20~~20}{21~~21}{22~~22}{23~~23}{24~~24}{25~~25}

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

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

 и я тоже в подсказках написал, не помогает)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 часов назад, Realtor сказал:

 и я тоже в подсказках написал, не помогает)

Подсказки для одаренных! Пиши прямо в описании строки, здесь уже есть шанс что прочитают, хотя-бы 50/50 ;) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 14.01.2018 в 03:34, Chernetskiy сказал:

Подсказки для одаренных! Пиши прямо в описании строки, здесь уже есть шанс что прочитают, хотя-бы 50/50 ;) 

Подскажи плиз, где писать прямо  описание строки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
20 часов назад, Realtor сказал:

Подскажи плиз, где писать прямо  описание строки?

Из цитаты выше... название позиций: "Площадь участка, сот.", "Прощадь общая, кв.м." и т.п., очевидно, что к числовому значению уже ничего дописывать не надо.

Заходим в Редактор форм -> таблица data -> открываем нужную строку, например lot_area и редактируем Название колонки (для человека)  Площадь участка на Площадь участка, сот. (или свой вариант), это и будет показано при размещении объявления. Для очень тупых можете там-же заполнить Подсказку (для человека) - "Площадь указывается только цифрами, в сотках" это будет показываться при клике на знак вопроса возле названия позиции к заполнению.

А еще там-же можно установить правила, например ограничить размер участка от 1 до 1000000 соток, пишем в Параметры:

rules=Type:int,Min:1,Max:1000000

Если надо, чтобы пропускались не только целые числа, но и с запятой, например 10,7 сотки, то пишем:

rules=Type:decimal,Min:1,Max:1000000

В этом случае ничего кроме цифр само правило не пропустит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Rules Email необходимо дополнить , чтобы вводились только маленькие буквы или уже перед записью в таблицу приводило к маленьким буквам. Сейчас многие вводят инфу через смартфоны и первую букву вводит смартфон с заглавной и клиенты не удосуживаются поменять заглавную на прописную и в поле emal записывается значение например Email@mail.ru вместо email@mai.ru

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 04.02.2018 в 04:26, Realtor сказал:

Rules Email необходимо дополнить , чтобы вводились только маленькие буквы или уже перед записью в таблицу приводило к маленьким буквам. Сейчас многие вводят инфу через смартфоны и первую букву вводит смартфон с заглавной и клиенты не удосуживаются поменять заглавную на прописную и в поле emal записывается значение например Email@mail.ru вместо email@mai.ru

Не фатально, почтовые сервисы автоматически всё приведут к нужному виду, хоть весь адрес заглавными напиши. Другое дело, если у вас логин - он-же email, клиент будет долго догонять, почему он не может войти в ЛК...? А потому что добрый админ по сути преобразовал его логин в удобный для него вид :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
17 часов назад, Chernetskiy сказал:

Не фатально, почтовые сервисы автоматически всё приведут к нужному виду, хоть весь адрес заглавными напиши. Другое дело, если у вас логин - он-же email, клиент будет долго догонять, почему он не может войти в ЛК...? А потому что добрый админ по сути преобразовал его логин в удобный для него вид :)

Так не после, а при вводе email приводить к удобо читаемому виду 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Realtor сказал:

Так не после, а при вводе email приводить к удобо читаемому виду 

На форуме для этого есть раздел Фриланс... 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, Chernetskiy сказал:

На форуме для этого есть раздел Фриланс... 

Знаю , что есть фриланс. Но то что я прошу , это не просто моя хотелка, а необходимая процедура любой цмс

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

есть ли валидация для вырезания последовательности цифр (например номера телефона) из текста?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, Realtor сказал:

есть ли валидация для вырезания последовательности цифр (например номера телефона) из текста?

Скорее всего - либо всё, либо только текст, что доставит неудобства при указании в тексте цифровых значений адреса, этажа/этажности, площадей, высот, удаленности до чего либо...

Всё равно найдутся хитрожопые, которые будут писать телефонный номер текстом. Включите модерацию объявлений и предупредите, что за указание контактов и адресов сайтов в тексте объявления - удаление объявления и блокировка аккаунта без предупреждения, пусть потом не удивляются. Ну или как вариант, списание средств как за опубликованное объявление (штраф), если размещение платное :) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Chernetskiy сказал:

Скорее всего - либо всё, либо только текст, что доставит неудобства при указании в тексте цифровых значений адреса, этажа/этажности, площадей, высот, удаленности до чего либо...

Всё равно найдутся хитрожопые, которые будут писать телефонный номер текстом. Включите модерацию объявлений и предупредите, что за указание контактов и адресов сайтов в тексте объявления - удаление объявления и блокировка аккаунта без предупреждения, пусть потом не удивляются. Ну или как вариант, списание средств как за опубликованное объявление (штраф), если размещение платное :) 

что мешает после публикации, отредактировать объявление и вписать туда контакты)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Realtor сказал:

что мешает после публикации, отредактировать объявление и вписать туда контакты)

Ничего не мешает. А будет-ли толк от валидатора для варианта "восемь - восемьсот 123 четыре пять шесть 7" ?

Или для варианта: Все вопросы на мыло ivanoff собака майл. ру

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

filter_var — Фильтрует переменную с помощью определенного фильтра.

Работает только в PHP версии 5.2.0 и выше.

Ссылка на документацию PHP

filter_var(variable, filter, options);
  • variable - переменная, которую необходимо проверить
  • filter - id фильтра. Фильтры можно посмотреть здесь.
  • options - (не обязательный параметр) Ассоциативный массив параметров либо логическая дизъюнкция (операция ИЛИ) флагов.

Функция возвращает отфильтрованные данные или FALSE, если фильтрация завершилась неудачей.

Примеры использования

Валидация email:

$user_mail = 'email@domain.com';
$result = filter_var($user_mail, FILTER_VALIDATE_EMAIL)

print $result ? 'email введён верно' : 'Вы ввели неверный email';

Фильтрация email адреса

$filtred_email = filter_var('you-email@domain.com', FILTER_SANITIZE_EMAIL);

Валидация по регулярному выражению

$user_phone = '+7 (999) 999-99-99'; // Номер телефона

// регулярка проверки номера телефона
$reg_exp = '/\+7\s\(\d{3}\)\s\d{3}\-\d{2}-\d{2}\b/';

$result = filter_var($user_phone, FILTER_VALIDATE_REGEXP, array(
    'options' => array(
        'regexp' => $reg_exp,
    ),
));

if ( ! $result)
{
    print 'Номер телефона введён неверно';
} else {
    print 'Номер телефона введён верно';
}

//  => Выведет "Номер телефона введён верно"

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас