无法使用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']);
确定此功能可以清理数据吗?
答案 0 :(得分:1)
不是。
如果要将变量放在数据库中,最好使用带有绑定变量的预准备语句。如果您不能使用PDO,您也可以使用mysqli。如果您真的遇到mysql_*
函数,则只需要mysql_real_escape_string
。
如果您输出到浏览器,则只需htmlspecialchars
。
简而言之,没有通用的清理功能,您需要为输出的介质准备/转义/编码数据。
答案 1 :(得分:0)
这是一个很大的话题 - 这个功能还可以,但有更好的方法可以做到。
检查mysqli_real_escape_string:http://php.net/manual/en/mysqli.real-escape-string.php
不要忘记准备好的陈述:http://php.net/manual/en/pdo.prepared-statements.php
另外,如果您的输入是整数类型怎么办?你应该进行类型转换。
此外,如果有人在您的网络表单中添加了额外的字段,该怎么办?
虽然这个功能确实做了一些消毒,但它只是冰山一角,就像我说这是一个很大的话题。
在我看来,这是草率的代码,提供的保护很少。