• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Потеря символов при передаче через Post

  • Автор темы Guest
  • Дата начала
G

Guest

В PHP новичок, пишу относительно недавно.

Надо передать строку из текстового поля через Ajax в PHP для занесения её в базу.
Строка имеет вид: "Сколько будет 2+2?" . Банально, но тут то и проблема.
Alert в функции выводит строку как надо, то есть "Сколько будет 2+2?"

Ajax:

Код:
function save_(id_quest,id_text)
{	alert(document.getElementById(id_text).value);
$.ajax({
type: 'POST',
url: 'save_question.php',
data: 'quest_id='+document.getElementById(id_quest).value +
'&quest_text=\''+document.getElementById(id_text).value+'\'',
success: function(html)
{
$('#answer').html(html);
}
});
}


В PHP-скрипт методом POST строка приходит вот такая: "Сколько будет 2 2?". :)

Символа "+" нет.

Куда он делся, почему это происходит и как это исправить/обойти ?
 
G

Guest

Код:
function save_(id_quest,id_text)
{	alert(document.getElementById(id_text).value);
$.ajax({
type: 'POST',
url: 'save_question.php',
data: 'quest_id='+document.getElementById(id_quest).value +
'&quest_text='+escape(document.getElementById(id_text).value),
success: function(html)
{
$('#answer').html(html);
}
});
}


в итоге получил строку u0421 u043A u043E u043B u044C u043A u043E %u0431%u0443%u0434%u0435%u0442 2 2?;

Плюса как не было, так и нет.
 
H

hosm

энкодить + надо, можно так encodeURIcomponent(document.getElementById(id_text).value) и потом декодить аналогично.
 
G

Guest

как вариант. А почему теряется символ "+" при POST'e и какие ещё символы могут быть утеряны?
 
H

hosm

ну, вроде только инглиш алфавитный и цифры обычно без проблем передаются. "вроде" говорю, потому что не пхпшник))))
мне лень сейчас искать ссылки на стандарты и т.п., вот тут где-то они упоминаются, погуглите.
например, вот такой полезный запрос<style type="text/css">@import url(http://www.google.com/cse/api/branding.css);</style><div class="cse-branding-bottom" style="background-color:#FFFFFF;color:#000000"> <div class="cse-branding-form"> <form action="http://www.google.ru/cse" id="cse-search-box" target="_blank"> <div> <input type="hidden" name="cx" value="partner-pub-9522070088145711:itpxzrl8xir" /> <input type="hidden" name="ie" value="windows-1251" /> <input type="text" value="encodeuricomponent php" name="q" size="31" /> <input type="submit" name="sa" value="Поиск" /> </div> </form> </div> <div class="cse-branding-logo">
poweredby_FFFFFF.gif
</div> <div class="cse-branding-text"> Найдется все!   </div></div>
будет восприниматься как
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!