jquery — простая проблема с кавычками в pdo-php-javascript (ajax)

вот моя проблема:

я получаю строку обратно из моей базы данных с PDO в php-скрипте (вызывается в ajax-запросе):

...some code
$myString = $pdoObject['field'];
...some code

Строка содержит одну одинарную кавычку: ‘

example :
it's strange

позже в этом php-скрипте я поместил строку в длинную строковую переменную, которую я отправил обратно в мой ajax-запрос:

$wholeString = "<tr><td><span title='$myString'>Some Text</span></td></tr>";

тогда я отправляю это обратно:
json_encode ($ wholeString);

в моем запросе ajax я просто поместил результат в поле jquery:

...some code
success : function(response){
$("#myField").html(response);
}
...some code

НАЗВАНИЕ вещь всегда вырезана в цитате:

<tr><td><span title='it'>Some Text</span></td></tr>

если я попытаюсь использовать htmlentities или htmlspecialchars, прежде чем поместить $ myString в $ wholeString, это ничего не изменит … есть кое-что, что я где-то упускаю …

Спасибо за помощь

0

Решение

У вас в основном проблемы с инъекцией HTML. Вы должны использовать htmlspecialchars () для экранирования ВСЕХ мета-символов html в вашем тексте, включая '

например

$wholeString = "<tr><td><span title='" . htmlspecialchars($myString, ENT_QUOTES) . "'>Some Text</span></td></tr>";

Как написано в вашем коде, вы будете генерировать:

<tr><td><span title='It's strange'>Some text etc...

что заставит браузер анализировать тег span как

<span
title='It'    // attribute "title" with value "It"s             // unknown random attribute s
strange'      // unknown random attribute "strange" with illegal single-quote
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]