在my site上,用户可以通过表单向数据库添加内容。我希望用户能够在表单中键入任何内容,并将所有内容添加到数据库中,以便他们输入它。目前我遇到了许多字符的问题,即斜杠,&,?等
允许将所有字符正确添加到数据库的最佳方法是什么?
另外,在显示它们时是否必须对它们进行解码才能正常工作?如果是这样,我该怎么做?
答案 0 :(得分:1)
保存时,使用mysql_real_escape_string(或PDO)来防止SQL注入攻击。这样就可以在不破坏SQL查询的情况下编写引号和反斜杠。
<?php
$text = mysql_real_escape_string($_POST['text']);
mysql_query('INSERT INTO table(text) VALUES("'.$text.'")');
?>
将数据打印到浏览器(带回声)时,首先通过htmlspecialchars运行以禁用HTML并解决当前问题:
<?php
// ...fetch $text from db here...
echo htmlspecialchars($text);
?>
答案 1 :(得分:0)
htmlentities()可以帮助您编码和decode html字符:
您还可以使用nl2br()来保留textarea元素的换行符:
此外,您应该使用PDO来满足您的数据库需求,因为它比旧的数据转义方法更安全,mysql_real_escape_string()