清理数据PHP函数

清理数据PHP函数,php,mysql,sanitization,Php,Mysql,Sanitization,无法使用PDO 我在这里读了很多问题,这是我第一次尝试为办公室以外的人做一些事情,所以我需要清理数据输入,研究它发现了这个功能 function clean_data($input){ $input = trim(htmlentities(strip_tags($input,","))); if (get_magic_quotes_gpc()) $input = stripslashes($input); $input = mysql_real_escape_string($input); re

无法使用PDO

我在这里读了很多问题,这是我第一次尝试为办公室以外的人做一些事情,所以我需要清理数据输入,研究它发现了这个功能

function clean_data($input){
$input = trim(htmlentities(strip_tags($input,",")));
if (get_magic_quotes_gpc())
$input = stripslashes($input);
$input = mysql_real_escape_string($input);
return $input;
}
例如:

$vartodb = clean_data($_POST['yourformfieldhere']);
这个功能可以清理数据吗?

不太好

如果要将变量放入数据库中,最好使用带有绑定变量的准备语句。如果不能使用PDO,也可以使用。如果您真的被
mysql.*
函数所困扰,那么您只需要
mysql\u real\u escape\u string

如果输出到浏览器,则只需要
htmlspecialchars


简而言之,没有通用的消毒功能,您需要为输出到的介质准备/转义/编码数据。

这是一个广泛的主题-此功能还可以,但有更好的方法

检查mysqli\u real\u escape\u字符串:

别忘了准备好的陈述:

另外,如果您的输入是integer类型,该怎么办?你应该打字

另外,如果有人在您的web表单中添加了额外字段,该怎么办

虽然这个函数确实做了一些消毒,但它只是冰山一角,就像我说的,这是一个庞大的主题


在我看来,这是提供很少保护的草率代码。

这种方法很可怕,会破坏和破坏数据。在使用数据之前,使用适当的卫生方法对数据进行消毒。例如,运行
mysql\u-real\u-escape\u-string()
之前,请先执行
mysql\u-query()
。或
htmlentities()
在网页上输出任何内容之前。但是PDO或mysqli确实是有益的,所以使用这段代码可以避免sql注入,
$sql=“INSERT INTO clientes VALUES(NULL,:iduser,:nombre,:cedula,:dir,:tel)”$query=$db->prepare($sql)$查询->执行(数组(':iduser'=>($邮政['id']),':nombre'=>($邮政['nombre']),':cedula'=>($邮政['cedula']),':dir'=>($邮政['dir']),':tel=>($邮政['tel']),)