К нам обратился менеджер сообщества, потому что заметил, что количество пользователей на его форуме растёт не так быстро, как раньше.
После некоторого исследования мы выяснили, что многие только что зарегистрировавшиеся пользователи удалялись, так как считались неактивными.
Оказалось, что это произошло из-за того, что настройка clean_up_inactive_users_after_days была установлена в значение 1
Поэтому я нажал на значок истории и увидел, что настройка была изменена с 730 (два года) на 1,095 (три года) более года назад.
Да, друзья, когда вы вводите запятую (или точку, как это принято в странах, где не говорят на английском) в качестве разделителя групп цифр в числовом параметре сайта, всё, что стоит после первого разделителя, тихо(!) отбрасывается. Чтобы усугубить ситуацию, это становится заметно только после полной перезагрузки страницы.
Это действительно пугающая ситуация. Мы исправили это здесь, во-первых, разрешив в интерфейсе только числовой ввод, а во-вторых, удалив все символы, кроме цифр, на стороне сервера для дополнительной безопасности.
Спасибо за отчет, Ричард! Я также смог воспроизвести описанную вами проблему. На сегодняшний день всё работает «как задумано», за исключением случая, когда 5,0 в Firefox превращается в 0 — это баг. Странная штука.
Похоже, нам нужно ещё раз пройти по этому вопросу, чтобы хотя бы обновить то, что видит администратор, сделав это корректным и без разделителей. В данный момент вам приходится обновлять веб-браузер после сохранения изменений, чтобы увидеть результат.
Но я думаю, мы можем сделать ещё больше, чтобы помочь администратору избегать таких ошибок и не путаться в них. Мне кажется неправильным, что можно ввести «364.5 days» для suggested topics max days old, и это превратится в 3645 дней. Возможно, стоит просто не разрешать ввод нечисловых значений в поля такого типа.
Ранее мы выполняли санитизацию ввода для целочисленных настроек сайта только на стороне сервера, что вызывало путаницу, когда пользователи вводили, например, 100.5, и получали 1005, не видя этого изменения в интерфейсе.
Теперь, когда мы используем нативные числовые поля для этих настроек, мы можем немного улучшить опыт, запретив ввод символов . или ,, поскольку должны использоваться только целые числа, а также установив шаг равный 1. Все остальные символы уже блокируются в этом нативном числовом поле.