php - 如何处理混合使用 HTML 和标点符号的用户输入?

标签 php mysql user-input sanitization

我有一个包含 HTML 和文本混合的表单域。 我希望用户能够使用基本的 HTML 和标点符号。

目前我正在使用 mysql_real_escape_stringpreg_replace 来清理数据并将其插入数据库。我的理解是 preg_replace 是去除任何不在允许字符白名单中的字符的最佳方法,并且 mysql_real_escape_string 可以防止 SQL 注入(inject)。

//How I collect and sanitise the data...
$var=mysql_real_escape_string(
 preg_replace("/[^A-Za-z0-9-?!$#@()\"'.:;\\@,_ =\/<> ]/",'',$_POST['var'])
);

但是,当使用 hash 字符时,它会不断中断。

我的问题是:

1) 有没有更有效的方法来做到这一点?

2) 如果这是最好的方法,我做错了什么?

我需要允许的字符是:所有字母数字字符和:

<强>? ! @#$​​% & ( ) - 。 , : ; ' "< >/+ =

谢谢!

最佳答案

为什么不只使用 strip_tags() 并将其限制为您需要的标签?

strip_tags ($str,"<br>")

然后您可以进行其他不太具有侵入性的“卫生”。

关于php - 如何处理混合使用 HTML 和标点符号的用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2230072/

相关文章:

php - 类似谷歌的搜索功能

php - 使用 PHP 发送电子邮件有什么要求?

php - 将 MYSQL 查询转换为 Eloquent Laravel

php - 一次将 mysql 转换为 pdo 一个脚本

php - 如何将值从 Jquery 传递到 PHP? HTML 是一个隐藏的输入表单字段

php - 将数据从mysql插入到phpexcel的数组中

mysql - PHP MySQLi 排名位置

ruby - 将用户输入直接传递给 strftime 是否危险?

sql - 坚持用户选择的最佳方式是什么?

R Shiny 仪表板: Upload data from both local file and the online database (such as Google Sheet)