pdo-php-javascript(ajax)的简单报价转义问题

时间:2014-10-08 14:34:37

标签: php jquery html ajax quotes

这是我的问题:

我在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,它不会改变任何东西......我想念某个地方......

感谢您的帮助

1 个答案:

答案 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