2013-11-23 39 views
0

无法使用PDO。净化数据PHP功能

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

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; 
} 

例如:

其确定该功能来净化数据?

+0

这种方法很可怕,会破坏和破坏数据。只需使用适当的卫生方法对数据进行清理即可使用。例如。 'mysql_real_escape_string()'在运行'mysql_query()'之前。或者在输出网页上的任何内容之前使用'htmlentities()'。但是,PDO或mysqli真的是有益的 –

+0

因此,使用此代码即时避免SQL注入, '$ sql =“INSERT INTO clientes VALUES(NULL,:iduser,:nombre,:cedula,:dir,:tel)”; $ query = $ db-> prepare($ sql); $ query-> execute( ':iduser'=>($ _ POST ['id']), ':nombre'=>($ _ POST ['nombre']), ':cedula'=> ($ _ POST ['cedula']), ':dir'=>($ _ POST ['dir']), ':tel'=>($ _ POST ['tel']), )'' – CCortina

回答

1

不是。

如果你打算把变量在数据库中,你会用事先准备好的声明与绑定变量会更好。如果你不能使用PDO,你也可以使用mysqli。如果你真的坚持mysql_*的功能,你只需要mysql_real_escape_string

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

总之,没有通用的消毒功能,你需要为你输出到媒体准备/逃生/编码数据。

0

这是一个很大的课题 - 这个功能是好的,但也有很多更好的方法来做到这一点。

检查mysqli_real_escape_string:http://php.net/manual/en/mysqli.real-escape-string.php

不要忘了准备好的发言:http://php.net/manual/en/pdo.prepared-statements.php

另外,如果您输入的整数类型是什么?你应该打字。

另外,如果有什么人增加了额外的字段到Web表单?

虽然这个功能确实做了一些卫生处理,但它只是冰山一角,就像我说这是一个很大的话题。

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