Проверка номера телефона

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

makki M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 7 месяцев
Откуда: Киев
Сайт

Сообщение #1 makki » 17.11.2017, 18:19

В движке очень жесткая проверка номера телефона на стадии оформления заказа. Некоторые совершенно правильные номера защита не пропускает. Считаю это критично.
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)

IvanovMARK M
Аватара
IvanovMARK M
Репутация: 2
Сообщения: 58
Зарегистрирован: 05.01.2016
С нами: 8 лет 2 месяца

Сообщение #2 IvanovMARK » 17.11.2017, 18:44

откройте для себя сервис заполнения форм.
возможно, поможет. мне больше нравится, чем обычные маски - адреса и ФИО приводит к одному виду.
вот пример

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

makki M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 7 месяцев
Откуда: Киев
Сайт

Сообщение #3 makki » 17.11.2017, 19:13

Решения есть, это понятно. Но хотелось бы, чтобы в Okay из коробки не было таких ляпов.
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)

IvanovMARK M
Аватара
IvanovMARK M
Репутация: 2
Сообщения: 58
Зарегистрирован: 05.01.2016
С нами: 8 лет 2 месяца

Сообщение #4 IvanovMARK » 17.11.2017, 19:24

makki писал(а):Решения есть, это понятно. Но хотелось бы, чтобы в Okay из коробки не было таких ляпов.

телефон каждый вводит, как удобнее.
+380 7567-778
+7 999-9900000
+7 123-444-0000
От этого нужно отучать посетителя.
на сайте своём - сделайте маску другую в поле телефона.
или отключите его. тогда можно вводить в полях любое. НО, отключить маски не лучший выбор.

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #5 korshunov » 18.11.2017, 07:04

Отучать пользователя - это выйдет за свой счет, то есть лишь во вред продажам. Сомневаюсь, что это хорошо.
Хотите отучать - начните отучать со СМИ, чтобы они все писали номер единообразно - будет эффективнее...

С проверкой телефона создатели не только усложнили, но и несколько напутали. Если на демосайте пробовать делать заказ с номером телефона '1', то даст ошибку "Поле Телефон пустое или имеет неверный формат". По смыслу текста ошибки пустой номер телефона не допускается. Однако если попробовать сделать заказ с пустым номером телефона, то он проходит...

С другой стороны, если смотреть код проверки, там сразу видны явные ошибки, например, в
public function is_phone($phone = "", $is_required = false) {
// general
if (!$this->is_safe($phone)) {
return false;
}
при вызове функции is_safe второй параметр не передается...

IvanovMARK M
Аватара
IvanovMARK M
Репутация: 2
Сообщения: 58
Зарегистрирован: 05.01.2016
С нами: 8 лет 2 месяца

Сообщение #6 IvanovMARK » 18.11.2017, 17:34

korshunov писал(а):Если делать заказ с номером телефона '1', то даст ошибку

с тобой трудно спорить.
"номер телефона 1" ... при желании, можно и к столбу пристать
Последний раз редактировалось IvanovMARK 19.11.2017, 06:53, всего редактировалось 2 раза.

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Сайт Skype

Сообщение #7 OkayCMS » 18.11.2017, 20:23

Можете привести пример какие правильные номера не проходят?

makki M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 7 месяцев
Откуда: Киев
Сайт

Сообщение #8 makki » 19.11.2017, 08:35

Не смог отследить закономерность. Иногда выдает ошибку с тем же номером телефона, а иногда нет. Чаще выдает ошибку, когда вводишь номер не вручную, а вставляешь из буфера обмена. Номер 0937597380. См.скриншот.
Screen Shot.jpg
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #9 korshunov » 19.11.2017, 10:11

Видимо, какие-нибудь невидимые символы типа мягкого переноса...

Попробуйте из проверки вообще убрать фрагмент
// for phone
if (preg_match("~([^0-9 _\+\-\(\)]+)~", $phone)) {
return false;
}
По-моему, он совсем ни к чему...

makki M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 7 месяцев
Откуда: Киев
Сайт

Сообщение #10 makki » 23.11.2017, 16:24

Убрал проверку. Понял что ошибка возникает когда номер телефона не набираешь а вставляшь из буфера. Очень неприятная ошибка. Надеюсь в следующем обновлении разработчики пофиксят.
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)


Название раздела: Баг-репорт OkayCMS (Сообщения об ошибках)
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Баг-репорт OkayCMS (Сообщения об ошибках)»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 17 гостей