这是我的问题:
我在php脚本中用PDO从我的数据库中获取一个字符串(在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
TITLE的东西总是被引用:
<tr><td><span title='it'>Some Text</span></td></tr>
如果我在将$ myString放入$ wholeString之前尝试使用htmlentities或htmlspecialchars,它不会改变任何东西......我想念某个地方......
感谢您的帮助
答案 0 :(得分:2)
你基本上有一个html注入问题。您需要使用htmlspecialchars()来转义文本中的所有html元字符,其中包括'
e.g。
$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