QSA и urldecode

12
[umka]
На сайте с 25.05.2008
Offline
456
#11

Если принимающая сторона — fastcgi (ну или в вашем случае fcgid), то параметры передаются через argv.

Т.е. параметры берутся из argv, автоматически декодируются один раз и записываются в $_GET.

Всё остальное, что вы видите (QUERY_STRING, REQUEST_URI, REMOTE_ADDR, и т.д.), предаётся через ENV.

Эти значения просто передаются "как есть" для нужд скрипта.

Лог в помощь!
C
На сайте с 04.02.2005
Offline
277
#12

Ага, спасибо, за разъяснение

Но, опять бараны..

    [argv] => Array

(
[0] => _route_=%d1%84%d1%84%d1%84%d1%84/usb/&rrr=%25D1%2584%25D1%2584%25D1%2584
)

_route_=%d1%84%d1%84%d1%84%d1%84/usb - это index.php?_route_=%d1%84%d1%84%d1%84%d1%84/usb

rrr - из QUERY_STRING, (QSA из rewrite_rule)

rrr=%d1%84%d1%84%d1%84%d1%84

ps/ можно подумать, что я тупой, да, наверное я такой и есть. Не складывается у меня каменный цветок.

Хостера я конечно попытаюсь пнуть, но тут хотя бы знать куда пихать - под зад, и сразу в морду.

[umka]
На сайте с 25.05.2008
Offline
456
#13

Я так понимаю, что вот такой скрипт test.php


<?
echo $_GET['rrr'] . "\n" . $_SERVER['QUERY_STRING'];
?>

При вызове http://сайт.ру/test.php?rrr=%D1%84%D1%84%D1%84%D1%84

Вместо

фффф

rrr=%D1%84%D1%84%D1%84%D1%84

Выдаёт:

%D1%84%D1%84%D1%84%D1%84

rrr=%25D1%2584%25D1%2584%25D1%2584

Так?

Если так, то спрашивайте хостера, почему такое происходит.

Потому что налицо двойное кодирование параметров, чего быть не должно.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий