2016-02-22 5 views
2

У меня есть веб-сайт, который только что переместился с одного сервера на другой. На старом сервере параметры get-запроса были автоматически «url decoded». Теперь, на моем новом сервере, когда я пытаюсь получить параметр GET, я не получаю url-декодированное значение, а кодированное значение.PHP GET параметры автоматического urldecode

Потому что кроме сервера ничего в моем проекте не изменилось, это заставляет меня думать, что это настройка PHP (может быть, в php.ini?).

Как я могу заставить PHP автоматически декодировать мои значения параметра GET?

+3

'Предупреждение Суперглобалы $ _GET и $ _REQUEST уже декодированы. Использование urldecode() для элемента в $ _GET или $ _REQUEST может иметь неожиданные и опасные результаты. ' –

+0

@HankyPanky OP говорят, что они ** не закодированы ** – fusion3k

+2

Затем, согласно этой заметке о руководстве, проблема лежит где-то в другом месте. Потому что нет версии PHP, которая не будет автоматически декодировать правильно закодированную GET. Однако здесь много комментариев о закодированных значениях JavaScript, которые не проходят должным образом. http://php.net/manual/en/function.urldecode.php –

ответ

0

Я только что столкнулся с той же проблемой, и это оказалось из-за правила перезаписи Apache на новом сервере, которого не было на старом сервере. Правило перекодировало уже закодированный URL. Мне посчастливилось заметить, что URL-адрес быстро изменился на вкладке «Инструменты разработчика» Chrome и понял, что перенаправление должно быть ответственным.

В моем случае решение заключалось в том, чтобы полностью удалить файл .htaccess, содержащий правило, но такое изменение также могло быть вызвано правилами в файлах конфигурации сервера Apache.

В случае, если существует правило перезаписи, но необходимо, можно отключить кодировку URL, добавив NE (no escape) к флагам перезаписи.

Смежные вопросы