Я пытаюсь прочитать переменные запроса, содержащие более 512 символов в массиве $_GET
. Однако, если я разбираю строку запроса, используя parse_string
, я могу отлично ее прочитать из результирующего массива.
Пример:
# GET /test.php?foo=<string with 513 characters>&bar=bar HTTP/1.1 <?php var_dump($_GET['foo']); # NULL var_dump($_GET['bar']); # "bar" parse_str($_SERVER['QUERY_STRING'], $output); var_dump($output['foo']); # <string with 513 characters> ?>
Это не имеет для меня никакого смысла, поскольку $_GET
использует parse_str
внутри, чтобы выводить переменные запроса из строки запроса. Я что-то упускаю?
Существует отчет об ошибке PHP. # 50449
Параметры GET со значением длиннее 512 символов не отображаются в массивах $ _GET и $ _REQUEST. Мы это заметили с момента обновления до 5.3.1
Там говорится, что Сухосин вызывает поведение.