在my site上,用户可以通过表单向数据库添加内容。我希望用户能够在表单中键入任何内容,并将其全部添加到数据库中,就像他们输入的那样。目前,我遇到了一些字符的问题,即斜杠、&、?等。
允许所有字符正确添加到数据库的最佳方法是什么?
另外,为了让它正常工作,在显示它们时是否必须对它们进行解码?如果是这样,我该怎么做呢?
发布于 2011-04-12 23:18:22
保存时,使用mysql_real_escape_string (或PDO)来防范SQL注入攻击。这样就可以在不破坏SQL查询的情况下编写引号和反斜杠。
<?php
$text = mysql_real_escape_string($_POST['text']);
mysql_query('INSERT INTO table(text) VALUES("'.$text.'")');
?>在将数据打印到浏览器(使用echo)时,首先通过htmlspecialchars运行它以禁用HTML并解决当前的问题:
<?php
// ...fetch $text from db here...
echo htmlspecialchars($text);
?>发布于 2011-04-12 23:17:33
htmlentities()可以帮助您对html字符进行编码和decode:
您还可以使用nl2br()保留文本区域元素的换行符:
此外,您应该使用PDO来满足数据库需求,因为它比旧的数据转义方法mysql_real_escape_string()安全得多。
https://stackoverflow.com/questions/5637553
复制相似问题