带有撇号的MySQL值现在显示在textarea中

时间:2011-05-24 20:00:57

标签: php html forms character

我已将以下TEXT值插入mysql ..

$_POST['groupname'] = "Linda's Group";
$groupname = $addslashes($_POST['groupname'];

然后像这样检索它..

$groupname = $row['groupname'];

当我回应它时,它正确显示为“Linda的小组”

但是当我把它放入..

echo "<input name='groupname' type='hidden' value='$groupname' />";

它显示为“Linda”,仅在撇号之前显示文本

我做错了什么?

3 个答案:

答案 0 :(得分:2)

每当您想要将字符串发送到浏览器时,请使用htmlspecialchars($string)

将其替换为:

echo "<input name='groupname' type='hidden' value='" . htmlspecialchars($groupname, ENT_QUOTES) . "' />";

...并移除addslashes()来电。

此外,确保在MySQL数据库中插入字符串值时始终使用mysql_real_escape_string($string)

答案 1 :(得分:0)

在HTML中使用之前,您需要转义单引号。这是因为您的属性值被单引号括起来。

如果您没有转义引号,则生成的HTML为:

<input name='groupname' type='text' value='Linda's group' />

这是无效的。你需要的是:

<input name='groupname' type='text' value='Linda&#039;s group' />

您可以致电htmlspecialchars

echo "<input name='groupname' type='hidden' value='" . htmlspecialchars($groupname) . "' />";

这也可以防止XSS攻击。否则,有人可以输入'/><script type="text/javascript">alert("omg hax!")</script><br',您会在页面上收到提醒。

答案 2 :(得分:0)

在将内容显示在网页上之前,您需要转义内容。你的标记是:

尝试:     htmlspecialchars($ dataToEscape,ENT_QUOTES,'UTF-8'false)

如果没有这个,你很容易受到XSS的攻击 考虑Linda'><script src='evil.js'></script>s Group这个例子:

<input name='groupname' type='hidden' value='Linda'><script src='evil.js'></script>s Group' />