所以我不想创建这个功能:
public static function formclean($string) {
htmlentities(strip_tags(trim($string)));
return $string;
}
为MySQL数据库条目准备字符串的位置。但是,当我调用我的函数时:
$class->string = Class::formclean($_POST['string']);
它不会返回准备好的字符串。当我编写下一段代码时,它确实有效。
$class->string = htmlentities(strip_tags(trim($_POST['string'])));
我做错了什么?
答案 0 :(得分:3)
您忘记将htmlentities()
的返回值捕获到变量中:
public static function formclean($string) {
$string = htmlentities(strip_tags(trim($string)));
return $string;
}
或者,简而言之,只需直接返回该输出:
public static function formclean($string) {
return htmlentities(strip_tags(trim($string)));
}
答案 1 :(得分:1)
您的问题与static
关键字无关。
您认为$string
被htmlentities()修改,但此类函数不会通过引用接收参数:它无法修改原始值。
取值
tring htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = 'UTF-8' [, bool $double_encode = true ]]] )
通过参考接收args的函数将包含& 符号,例如sort():
bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
strip_tags()
与数据库或验证无关。这只是一种破坏用户数据的方法。 proper way to prevent SQL injection是使用您的数据库库功能来注入参数(即预准备语句)。