Введенные браузером значения искажаются в программах PHP


Дата публикации:8 декабря 2020 года.



INFOMARTION > Введенные браузером значения искажаются в программах PHP

Обзор.

При переходе от экрана ввода к экрану подтверждения в PHP возникал мусорный текст.

При вводе текста в форму и переходе к экрану подтверждения текст искажается.

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

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


Оглавление

  1. расследование (для определения причины чего-либо)
  2. резюме

1. расследование (для определения причины чего-либо)

Для выяснения причины проблемы была изучена следующая информация.

1-1. опрос

Во-первых, проверьте настройки PHP (php.ini).

php.ini


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

Он соответствует описанию выше и, похоже, в полном порядке.

Тогда проблема, похоже, вызвана источником PHP.

Однако источник PHP не определил вероятную проблему.

Я еще раз проверил php.ini на подозрительные настройки и нашел одну подозрительную настройку.

php.ini


mbstring.http_input = auto

Было неясно, кодируется ли он в UTF-8, поскольку было установлено значение auto, поэтому для проверки он был изменен следующим образом.

php.ini


mbstring.http_input = UTF-8

Успешное устранение искаженного текста.

Эта настройка необходима для модуля mbstring при использовании в PHP многобайтовых строк, таких как японский язык.

Настройка кодировки получаемых http-запросов.

2. резюме

Если возникает искаженный текст, сначала попробуйте организовать поток обработки.

Если при использовании PHP для перехода от экрана ввода к экрану подтверждения или других переходов между экранами у вас появляются искаженные символы, проверьте следующие настройки в php.ini.

По умолчанию установлено значение 'auto', поэтому проверьте его при использовании mbstring для обработки многобайтовых строк.

Спасибо, что досмотрели до конца.