Баг с эмодзи в коментариях к заказу. Заказы не оформляются. Не принято

4

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

При оформлении заказа включено поле с комментариями.

В итоге такие заказы не могут быть записаны в базу.

Переход на поддержку эмодзи не предлагать. Он не сделан. Может мы его и сделаем, но и в стандартном режиме работы заказы же должы оформляться, не так ли?

Query Error 1366: Incorrect string value: '\xF0\x9F\x99\x8F\xF0\x9F...' for column 'comment' at row 1
Query: INSERT INTO shop_order
(`state_id`, `total`, `currency`, `rate`, `tax`, `discount`, `shipping`, `comment`, `unsettled`, `contact_id`, `create_datetime`) VALUES ('new', 1624, 'RUB', 1, 0, 0, 580, 'Анастасия, добавьте эти ленты в заказ 1003078 пожалуйста и перевыставите счёт мне 🙏😊', '0', '3604', '2019-12-05 18:01:17')

Декодер Лебедева говорит, что текст коммента был примерно такой: 'Анастасия, добавьте эти ленты в заказ 1003078 пожалуйста и перевыставите счёт мне ?��˜�'

По мне дак это катастрофический баг для современного Интернет-магазина. Потеря лояльного клиента ведь дорого стоит.

Прошу срочно исправить!

16 комментариев

  • +2

    Декодер Лебедева говорит, что текст коммента был примерно такой...

    А разум что-нибудь подсказывает, кроме того что это "катастрофический баг для современного Интернет-магазина"? =)

    • +1

      Павел, понятно. Скажите мне пожалуйста, вот когда я вот подключился, в прошлом году, в ноябре месяце, и до 26 ноября сего года не было ни единого эмодзи, чем это было вызвано?

      Я поэтому Shop-Script и выбрал, что он безукоризненно работает, без всяких эмодзи, и что же теперь, я буду страдать из-за ваших продвинутых смайликов? Что, каждый день, что, 24 часа в сутки я должен, э... подключаться вновь, что ли, к декодеру Лебедева? Что-то я не слышал такие правила, вообще, когда я оформлял документы. Такого не было!

      Извините меня! Извините меня! Я когда, в ноябре прошлого года, до 26 ноября сего года, не было ни-е-ди-но-го эмодзи, ещё раз я вам говорю. Или я... Или вы не ферштейн, или вам надо по-китайски сказать как-то? Ни единого эмодзи не было!

      Ответьте на мой вопрос конкретно, и я тогда успокоюсь. Не мотайте мои нервы! Ответьте на мой вопрос кон-крет-но! Понимаете русский язык? Я вас слушаю ваш ответ!

      Я задавал вопрос! Перейти на совместимость с эмодзи, то что вы говорите, это сейчас не интересует, я говорю, то что до ноября прошлого года... ДА ВЫ ЗНАЕТЕ МОЙ ВОПРОС! До ноября двадцать... э... 2019 года, 26 ноября, НЕ БЫЛО НИ ЕДИНОГО ЭМОДЗИ! С чем это могло быть вызвано? Я говорю, ни единого эмодзи! А сейчас есть эмодзи!

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

    • +1
      shop shop Разработчик 7 декабря 2019 06:18 #

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

    • +1

      А вообще можете на все инпуты повесить наблюдателя и пусть вырезает из поля все эмодзи

      return this.replace(/([\uE000-\uF8FF]|\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDDFF])/g, '');

      • +1
        shop shop Разработчик 7 декабря 2019 06:14 #

        А сейчас представьте себе рядового владельца Интернет-магазина. Который как навешивать события не знает.

        Плюс при каждом обновлении это будет отваливаться. 

        Плюс он жил себе и не тужил. И тут бах. Узнаёт, что часть его выстраданных заказов уходило в мусор из-за бага в Шопскрипте?

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

        Реальная уязвимость. Например вызывая такую ошибку ботом в надежде переполнить лог файл не такая уж и бредовая идея. И за 4-6 часов это можно сделать. И тогда сайт упадёт из-за того, что кончилось место на диске.


        Темболее эта ошибка пишется как минимум в 2 файла вебасиста: в db.log и error.log
        И объем записываемых данных можно легко увеличить, если в комменты вставить войну и мир, например. и смайлик. Тогда и не надо 4-6 часов.... Сервер упадёт горраздо быстрее...

        Печальная уязвимость Вебасиста.... 

        Как я понимаю тоже самое можно провернуть с отзывами....

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

        Звучит ужасно.

      • 0
        shop shop Разработчик 7 декабря 2019 07:01 #

        Про Войну и Мир перенес в отдельную ветку... Шокирующая идея. И она, не моя. Мне ее подсказал один добрый человек..

      • 0
        Михаил Ушенин Михаил Ушенин 9 декабря 2019 09:06 #

        Переход на поддержку эмодзи не предлагать. Он не сделан. Может мы его и сделаем, но и в стандартном режиме работы заказы же должы оформляться, не так ли?

        Нет, не должны, если не включена поддержка эмодзи. Чтобы оформлялись, нужно включить поддержку эмодзи. Эмодзи не обрабатываются правильно без включённой поддержки эмодзи.

      • +1
        shop shop Разработчик 9 декабря 2019 09:41 #

        По мне дак странно... почему не вырезать эмодзи из всех полей при сохранении заказа? В этом же нет технической сложности, если это делать штатными средствами Шопскрипта.

        Решается несколькими сроками кода. Почему не сделать?

      • +3

        На самом деле все верно и зря набросились на человека и тем более отклонили (может описано просто не техническим слогом)

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

      • +1
        Парусов Александр Парусов Александр 16 марта 2021 14:14 #

        По словам наших менеджеров, у нас регулярно возникает такая же проблема. Клиенты жалуются, что заказ не сохраняется. В комментарии ставят смайлики, т.к. специфика ИМ - товары для женской ЦА.

        • +2
          replicant replicant 16 марта 2021 15:38 #

          Для этого достаточно либо включить поддержку эмодзи в приложении Настройки либо изменить поле comment в таблице заказов shop_order запросом через phpmyadmin

          ALTER TABLE `shop_order` CHANGE `comment` `comment` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL;

          Но вообще в последних версиях SS вроде в случае неподдержки эмодзи просто будут вопросительные знаки стоять в комментарии и всё.

          Добавление новых комментариев к этой теме отключено.