我的问题:
PHP Warning: preg_match() expects parameter 2 to be string, array given in *****
my code:
foreach ($_POST as $secvalue) {
if ((preg_match("/<[^>]*iframe*'"?[^>]*/", $secvalue)) ||
(preg_match("/<[^>]*object*'"?[^>]*/", $secvalue)) ||
(preg_match("/<[^>]*applet*'"?[^>]*/", $secvalue)) ||
(preg_match("/<[^>]*meta*'"?[^>]*/", $secvalue)) ||
(preg_match("/<[^>]*onmouseover*'"?[^>]*/", $secvalue)) ||
(preg_match("/<[^>]script*'"?[^>]*/", $secvalue)) ||
(preg_match("/<[^>]*body*'"?[^>]*/", $secvalue)) ||
(preg_match("/<[^>]style*'"?[^>]*/", $secvalue))) {
die ($htmltags);
}
}
}
怎么了?正确的密码是什么?坦克
问题是您将数组作为第二个参数传递给preg_match()
,但preg_match()
将第二个参数作为字符串值。
检查下面的代码,它将从post请求中获取所有键值。
foreach ($_POST as $key => $secvalue){
if ((preg_match("/<[^>]*iframe*'"?[^>]*/", $secvalue)) ||
(preg_match("/<[^>]*object*'"?[^>]*/", $secvalue)) ||
(preg_match("/<[^>]*applet*'"?[^>]*/", $secvalue)) ||
(preg_match("/<[^>]*meta*'"?[^>]*/", $secvalue)) ||
(preg_match("/<[^>]*onmouseover*'"?[^>]*/", $secvalue)) ||
(preg_match("/<[^>]script*'"?[^>]*/", $secvalue)) ||
(preg_match("/<[^>]*body*'"?[^>]*/", $secvalue)) ||
(preg_match("/<[^>]style*'"?[^>]*/", $secvalue))) {
die ($htmltags);
}
}