Il separatore delle migliaia rovina silenziosamente il valore inserito nelle impostazioni

Storia dell’orrore in arrivo.

Un community manager ci ha contattato perché ha notato che il numero di utenti sul loro forum non stava crescendo come al solito.

Dopo alcune ricerche, abbiamo scoperto che molti utenti appena registrati venivano rimossi perché ritenuti inattivi.

Si è scoperto che ciò era dovuto al fatto che l’impostazione clean_up_inactive_users_after_days era impostata su 1 :scream:

Così ho cliccato sull’icona della cronologia e ho visto che l’impostazione era stata cambiata da 730 (due anni) a 1.095 (tre anni) più di un anno fa.

Sì, gente, quando inserite una virgola (o un punto, come è comune nei paesi non anglofoni) come separatore di gruppo di cifre in un’impostazione numerica del sito, questa taglierà silenziosamente(!) tutto ciò che si trova dopo il primo separatore. Per peggiorare le cose, questo diventerà visibile solo dopo un aggiornamento completo della pagina.

12 Mi Piace

Mi chiedo se anche altre impostazioni che utilizzano valori numerici elevati siano interessate in questo modo? :thinking:

6 Mi Piace

Beh, sì.
Ogni impostazione numerica è interessata, e ci sono molti giorni, minuti e impostazioni generiche di alto valore

imap_polling_old_emails:1000
decompressed_theme_max_file_size_mb:1000
topic_views_heat_low:1000
secure_uploads_max_email_embed_image_size_kb:1024
maximum_session_age:1440
post_edit_time_limit:1440
composer_media_optimization_image_resize_dimensions_threshold:1920
composer_media_optimization_image_resize_width_target:1920
max_bookmarks_per_user:2000
topic_views_heat_medium:2000
default_other_new_topic_duration_minutes:2880
polling_interval:3000
topic_views_heat_high:3500
max_image_size_kb:4096
max_attachment_size_kb:4096
min_topic_views_for_delete_confirm:5000
max_form_template_content_length:5000
invite_link_max_redemptions_limit:5000
sitemap_page_size:10000
max_notifications_per_user:10000
short_progress_text_threshold:10000
auto_close_topics_post_count:10000
max_drafts_per_user:10000
anonymous_account_duration_minutes:10080
default_email_digest_frequency:10080
tl3_requires_posts_read_cap:20000
anon_polling_interval:25000
max_post_length:32000
tl2_post_edit_time_limit:43200
max_export_file_size_kb:50000
max_bulk_invites:50000
background_polling_interval:60000
decompressed_backup_max_file_size_mb:100000
search_enable_recent_regular_posts_offset_size:200000
default_other_auto_track_topics_after_msecs:300000
max_draft_length:400000
composer_media_optimization_image_bytes_optimization_threshold:524288

suggested_topics_unread_max_days_old:
suggested_topics_max_days_old:
pending_users_reminder_delay_minutes:
invite_expiry_days:
purge_unactivated_users_grace_period_days:
anonymous_account_duration_minutes:
ignored_users_message_gap_days:
clean_up_inactive_users_after_days:
clean_up_unused_staged_users_after_days:
show_time_gap_days:
old_post_notice_days:
returning_users_days:
suppress_digest_email_after_days:
disallow_reply_by_email_after_days:
delete_email_logs_after_days:
reset_bounce_score_after_days:
delete_rejected_email_after_days:
purge_deleted_uploads_grace_period_days:
tl2_requires_days_visited:
tl3_requires_days_visited:
invalidate_inactive_admin_email_after_days:
send_old_credential_reminder_days:
search_query_log_max_retention_days:
cold_age_days_low:
cold_age_days_medium:
cold_age_days_high:
delete_drafts_older_than_n_days:
delete_merged_stub_topics_after_days:
default_other_new_topic_duration_minutes:
retain_web_hook_events_period_days:
revoke_api_keys_unused_days:
revoke_api_keys_maxlife_days:
revoke_user_api_keys_unused_days:
revoke_user_api_keys_maxlife_days:

7 Mi Piace

Grazie per il rapporto, @RGJ! :pray:

Questo è uno spaventoso, in effetti. L’abbiamo risolto qui 1) consentendo solo input numerici nell’interfaccia utente e 2) rimuovendo eventuali non cifre sul back-end per maggiore sicurezza.

11 Mi Piace

Riapro questo, sembra che le cose siano regredite e siano persino peggiorate.

  • Vai su Admin → Impostazioni → Configurazione di base → argomenti suggeriti

Firefox su desktop

  • Inserisci 5.0 quindi salva (nessun errore) e aggiorna → Trova che è stato impostato su 50
  • Inserisci 5,0 quindi salva (nessun errore) e aggiorna → Trova che è stato impostato su 0

Safari su iOS

  • Inserisci 5.0 quindi salva (nessun errore) e aggiorna → Trova che è stato impostato su 50
  • Inserisci 5,0 quindi salva (nessun errore) e aggiorna → Trova che è stato impostato su 50
4 Mi Piace

Grazie Richard per la segnalazione, riesco assolutamente a riprodurlo.

2 Mi Piace

Grazie per il rapporto, Richard! Anch’io sono in grado di replicare ciò che stai descrivendo. È tutto “by design” (per come è stato progettato) ad oggi, tranne per il fatto che 5,0 risulta in 0 in Firefox, che è un bug. È strano.

Sembra che dobbiamo rivedere di nuovo questa situazione, almeno per aggiornare ciò che vede l’amministratore in modo che sia accurato e non includa i separatori. Attualmente è necessario aggiornare il browser web dopo aver salvato le modifiche per vederlo.

Ma penso che possiamo anche fare di più qui per aiutare l’amministratore a evitare di commettere questi errori e a non confondersi a causa di essi. Mi sembra sbagliato che si possa inserire “364,5 giorni” per suggested topics max days old (massimo giorni di anzianità degli argomenti suggeriti) e che questo si trasformi in 3645 giorni. Forse semplicemente non consentiamo l’inserimento di caratteri non numerici in questi tipi di campi.

6 Mi Piace

Corretto in FIX: Do not allow , or . in site setting integer input by martin-brennan · Pull Request #27618 · discourse/discourse · GitHub. Non è più possibile inserire altro che numeri in questi campi. Niente più separatori , o ..

In precedenza, sanificavamo l’input per le impostazioni del sito intere solo lato server, il che era un po’ confusionario quando gli utenti inserivano, ad esempio, 100.5 e ottenevano 1005, senza vedere questo riflesso nell’interfaccia utente.

Ora che utilizziamo input numerici nativi per queste impostazioni, possiamo migliorare un po’ l’esperienza non consentendo . o , nell’input, poiché dovrebbe trattarsi solo di numeri interi, e aggiungere un passo di 1. Tutti gli altri caratteri sono già impediti in questo input numerico nativo.

6 Mi Piace

Questo argomento è stato chiuso automaticamente dopo 3 giorni. Non sono più ammesse nuove risposte.