Правильная обработка "+" в GET-запросе?

Проект сделан на PHP.

Есть ссылка вида server.com/index.php?email=name%2Bsolt@server.com

Переход по такой ссылке ведёт к тому, что браузер (Firefox) преобразует %2B в "+".

Далее на сервер приходит GET-запрос в PHP как «name solt@server.com».

Т. е. браузер, сервер или PHP воспринимают символ "+" как пробел.

Мне надо иметь в переменной GET значение «name+solt@server.com», а не «name solt@server.com».

Можно, конечно, заменять пробел на "+" уже в коде, но может быть есть более корректное решение данной проблемы?
  • Вопрос задан
  • 6765 просмотров
Пригласить эксперта
Ответы на вопрос 5
Troytft
@Troytft
encodeURIComponent(text)
Ответ написан
@temaHT
А вы уверены что это браузер преобразует? По идее если действительно такая ссылка, то в скрипт как раз должно приходить name+solt@server.com. Возможно что у вас где то на этапе формирования ссылки, происходит неверная операция.
Ответ написан
Fedcomp
@Fedcomp
У меня была такая проблема с mod_rewrite у apache. Решилось двойным экранированием url_encode() (и двойным раскодированием соответственно)
Ответ написан
Комментировать
taliban
@taliban
php программист
$_SERVER['REQUEST_URI'] что там находится? может у Вас там хитрый фильтр стоит
Ответ написан
Вот предлагают решения для этого: www.dracos.co.uk/code/apache-rewrite-problem/

Ещё можно попробовать flag b, но, насколько я понял, будет обратная ситуация — пробел будет превращаться в '+'.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
23 апр. 2024, в 11:46
3000 руб./за проект
23 апр. 2024, в 11:38
20000 руб./за проект