我已将以下TEXT值插入mysql ..
$_POST['groupname'] = "Linda's Group";
$groupname = $addslashes($_POST['groupname'];
然后像这样检索它..
$groupname = $row['groupname'];
当我回应它时,它正确显示为“Linda的小组”
但是当我把它放入..
echo "<input name='groupname' type='hidden' value='$groupname' />";
它显示为“Linda”,仅在撇号之前显示文本
我做错了什么?
答案 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'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' />