Elrontott űrlapbeviteli hibák javítása PHP-ben: UTF-8 és mbstring


Közzétéve:

Frissítve:


Cikkek › Elrontott űrlapbeviteli hibák javítása PHP-ben: UTF-8 és mbstring

A 2026-os helyzet és biztonságos használat

Következtetés: Maradjon meg egy explicit kódolás – általában UTF-8 – a HTML űrlapon, a HTTP-válaszon, a PHP-forráson, a karakterlánckezelésen és az adatbázis-kapcsolaton. A globális beállítások módosítása előtt rögzítse a nyers bemenetet, és azonosítsa azt a határt, ahol a bájtok helytelenül dekódolódnak.

Amit megtudhat

  • Hogyan lehet megkülönböztetni a megjelenítési problémát a bemeneti konverziótól vagy az adatbázis sérülésétől.
  • Mely fejlécek és PHP-beállítások relevánsak a modern UTF-8 alkalmazások számára.
  • Miért nem szabad az alábbi régebbi mbstring.internal_encoding és mbstring.http_input receptet átmásolni egy jelenlegi telepítésre.

Kinek szól a cikk: PHP-karbantartók a mojibake hibaelhárítása az űrlapellenőrzés, az átirányítások vagy az adatbázis-körutazások után.

2026-os helyzet: A PHP megszüntette a régi iconv/mbstring kódolási direktívákat a PHP 5.6-ban a default_charset javára; A modern kódnak minden határon egyértelművé kell tennie a kódolást. Az eredeti konfiguráció csak a történelmi esemény magyarázata érdekében marad meg.

Biztonsági megjegyzés: Az eredeti cikk parancsait és konfigurációs példáit nem futtattuk újra modern éles környezetben. Alkalmazás előtt ellenőrizze a támogatott verziókat, készítsen biztonsági másolatot, és külön tesztkörnyezetben készítse elő a visszaállítást.

Hivatalos források

Áttekintés

A PHP-ban a beviteli képernyőről a megerősítő képernyőre való áttéréskor zavaros szöveg jelentkezett.

Az űrlapon a szöveg bevitele és a megerősítő képernyőre való áttérés során a szöveg zavaros.

A saját képernyőre való áttéréskor a bevitel-ellenőrzési hibák miatt torz szöveg is megjelenik.

Mivel a szerver még csak most épült, úgy éreztem, hogy valami hiányzik a PHP-konfigurációból, ezért leírom, hogy mit találtam akkor.


Tartalomjegyzék

  1. vizsgálat (valaminek az okának megállapítása)
  2. Összefoglalás

1. vizsgálat (valaminek az okának megállapítása)

A probléma okának felderítése érdekében a következő információkat vizsgálták meg.

1-1. felmérés

Először ellenőrizze a PHP beállításokat (php.ini).

php.ini


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

A fent leírtak szerint működik, és úgy tűnik, rendben van.

Akkor úgy tűnik, hogy a problémát a PHP-forrás okozza.

A PHP-forrás azonban nem azonosította a valószínűsíthető problémát.

Ismét ellenőriztem a php.ini gyanús beállításokat, és találtam egy gyanús beállítást.

php.ini


mbstring.http_input = auto

Nem volt egyértelmű, hogy UTF-8-ban van-e kódolva, mert auto volt beállítva, ezért a következő módon változtattuk meg, hogy kipróbáljuk.

php.ini


mbstring.http_input = UTF-8

Sikeresen megoldotta a torzított szöveget.

Ez a beállítás az mbstring modul számára szükséges, ha többbájtos karakterláncokat használunk, mint például a japán nyelv a PHP-ben.

A fogadott http-kérések kódolásának konfigurálása.

2. összefoglaló

Ha zavaros szöveg jelenik meg, először próbálja meg rendezni a feldolgozási folyamatot.

Ha pedig a PHP használatával a beviteli képernyőről a megerősítő képernyőre való áttéréskor vagy más képernyőátmeneteknél zavaros karaktereket tapasztal, gyanakodjon a következő beállításokra a php.ini fájlban.

Az alapértelmezett beállítás az 'auto', ezért ellenőrizze ezt, ha az mbstring-et többbájtos karakterláncok feldolgozására használja.

Ezek a legfontosabb figyelembe veendő lépések és korlátozások.