Hodnoty zadané prehliadačom sú v programoch PHP skreslené


Dátum vydania:8. decembra 2020.



INFOMARTION > Hodnoty zadané prehliadačom sú v programoch PHP skreslené

Prehľad.

Pri prechode zo vstupnej obrazovky na potvrdzovaciu obrazovku v jazyku PHP sa objavil skreslený text.

Pri zadávaní textu do formulára a prechode na potvrdzovaciu obrazovku je text skreslený.

Ku skreslenému textu dochádza aj pri prechode na vlastnú obrazovku v dôsledku chýb kontroly vstupu.

Keďže server bol práve postavený, mal som pocit, že v konfigurácii PHP niečo chýba, preto opíšem, čo som vtedy zistil.


Obsah

  1. vyšetrovanie (na zistenie príčiny niečoho)
  2. zhrnutie

1. vyšetrovanie (na zistenie príčiny niečoho)

Na zistenie príčiny problému boli preskúmané tieto informácie.

1-1. prieskum

Najprv skontrolujte nastavenia PHP (php.ini).

php.ini


default_charset = "UTF-8"
mbstring.internal_encoding = UTF-8
mbstring.encoding_translation = On

Je to tak, ako je popísané vyššie, a zdá sa, že je v poriadku.

Potom sa zdá, že problém je spôsobený zdrojom PHP.

Zdroj PHP však neidentifikoval pravdepodobný problém.

Opäť som skontroloval php.ini na podozrivé nastavenia a našiel som jedno podozrivé nastavenie.

php.ini


mbstring.http_input = auto

Nebolo jasné, či je kódovaný v UTF-8, pretože bol nastavený na automatický, takže bol zmenený takto, aby sa to vyskúšalo.

php.ini


mbstring.http_input = UTF-8

Úspešne vyriešený skreslený text.

Toto nastavenie je potrebné pre modul mbstring pri používaní viacbajtových reťazcov, ako je napríklad japončina v PHP.

Konfigurácia kódovania prijatých požiadaviek http.

2. zhrnutie

Ak sa vyskytne skreslený text, pokúste sa najprv zorganizovať tok spracovania.

Ak sa pri prechode zo vstupnej obrazovky na potvrdzovaciu obrazovku alebo pri iných prechodoch na obrazovku vyskytnú skreslené znaky, podozrievajte nasledujúce nastavenia v súbore php.ini.

Predvolené nastavenie je 'auto', preto ho skontrolujte, keď používate mbstring na spracovanie viacbajtových reťazcov.

Ďakujeme vám za sledovanie až do konca.