Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 清理从表单注入mysql的数据_Php_Mysql - Fatal编程技术网

Php 清理从表单注入mysql的数据

Php 清理从表单注入mysql的数据,php,mysql,Php,Mysql,我的函数库中有一个名为sanitse的函数。它接受字符串的一个参数并返回经过清理的字符串 function sanitise($data){ return htmlentities(mysql_real_escape_string($data)); } 我正在开发一个论坛,我需要清理以文本形式提交的数据。(它存储在数据库中)。但也出现了一些问题。存储数据时,新行将表示为\r\n,并在检索数据后显示在线程上。应该换一条新路线。nl2br并没有解决这个问题,我在另一篇文章中读到,这应该从问

我的函数库中有一个名为sanitse的函数。它接受字符串的一个参数并返回经过清理的字符串

function sanitise($data){
    return htmlentities(mysql_real_escape_string($data));
}
我正在开发一个论坛,我需要清理以文本形式提交的数据。(它存储在数据库中)。但也出现了一些问题。存储数据时,新行将表示为\r\n,并在检索数据后显示在线程上。应该换一条新路线。nl2br并没有解决这个问题,我在另一篇文章中读到,这应该从问题的根源(函数)来解决,而不是“黑客”解决方案来纠正它

如果我不整理数据,注释将正确显示。但这当然不安全


如果您有任何建议,我们将不胜感激。

无论如何,您所做的并不安全。你真的应该明白你在做什么

mysql\u real\u escape\u string():此函数获取字符串并将其转义,以便在SQL语句中使用。这样做的目的就是让查询解析器清楚什么是数据,什么是查询。你明白这一点很重要


htmlentities()/htmlspecialchars():这些函数对字符串进行转义,以便它们可以在HTML中使用,而不会让HTML解析器认为
等字符感谢您的响应。因此,在这种情况下,交换mysql\u real\u escape\u字符串和htmlentities将使代码安全,当然前提是在注入mysql之前调用函数?@jollinski,是的,但不要这样做!为数据库连接切换到PDO,使用准备好的查询,并在HTML中输出任何变量数据时使用
htmlspecialchars()
进行转义。那么,你就不必那么担心这些问题了。否则,您只会将数据弄得一团糟。