При передаче строки 1+1 на сервере получаю 1 1 Где плюс?

aleks_malcev

Новичок
При передаче строки 1+1 на сервере получаю 1 1 Где плюс?

Всем доброе время суток!
Суть проблемы: С клиента с помощью XMLHttpRequest передаю методом POST строковый параметр
var params = 'my_prm=1+1';

На сервере в массиве $_POST['my_prm'] получаю строку '1 1'.
Почему пропал плюс?

Заранее спасибо!
 

Фанат

oncle terrible
Команда форума
потому что плюс и означает пробел
поищи в яндексе 1 1 и посмотри на адресную строку
 

aleks_malcev

Новичок
Автор оригинала: *****
потому что плюс и означает пробел
поищи в яндексе 1 1 и посмотри на адресную строку
Огромное спасибо! Совсем забыл что пробелы заменяются + (ну и соответственно наоборот на сервере)
Только недавно начал работать с web не все базовые моменты успел запомнить.
 

aleks_malcev

Новичок
Автор оригинала: Pigmeich
aleks_malcev
потому применяй к параметрам эскейп.
Спасибо за сообщение!
Оказалось что в моём случае воспользоваться escape() нельзя. Эта функция не кодирует знак + (плюс)
Об этом я прочитал http://xhtml.ru/2006/05/25/encodestring/
Очень приличная статья, мозги приводит в порядок, доступно написано для чего и когда использовать escape(),
когда encodeURI() а когда encodeURIComponent()

Единственно что мне осталось не понятно, кто на сервере преобразовал мой закодированный + обратно?
Работает всё так: на клиенте кодирую строковый параметр '1+1' отправляю на сервер.
На сервере никаких перекодировок не делаю, а в массиве $_POST у меня уже строка в виде '1+1'?

Надеюсь, что еще не совсем надоел своими вопросами...
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
На сервере никаких перекодировок не делаю, а в массиве $_POST у меня уже строка в виде '1+1'?
Что мешает проверить?
Это займет 1 минуту.
 

aleks_malcev

Новичок
Автор оригинала: Mr_Max
Что мешает проверить?
Это займет 1 минуту.
Сорри, проверить что? Я ведь проверил, на клиенте я строку кодирую и вместо '1+1' у меня что то типа '1%271'
это и уходит на сервер. На сервере в массиве $_POST лежит уже перекодированная обратно строка т.е. '1+1'
На клиенте кодировал то я сам, непосредственно перед отправкой Post запроса, а вот кто на сервере раскодировал,
перед тем как положить в массив $_POST?


Всё, вопрос снимается... Нашел сайт phpwiki. В статье Основы веб-программирования рассказано.
Переменные GET-запроса попадают в массив $_GET, переменные POST-запроса - в массив $_POST, серверные переменные (типа IP-адреса, имени скрипта и т.д.) - в $_SERVER, оператор "точка" (.) - объединение строк... Причем все служебные операции (чтение stdin и переменных среды, Url-декодирование) уже произвел сам PHP
-~{}~ 11.01.08 00:49:

Огромное спасибо всем за помощь!
Отдельное спасибо *****у за первый отклик, он реально помог мне разобраться с проблемой. :) Почему ***** русскими буквами получаются звёздочки? :confused: ужас :) и англицкими тоже самое :) попробую так: Ф а н а т у отдельное спасибо :)
 
Сверху