我的问题:
PHP Warning: preg_match() expects parameter 2 to be string, array given in *****
我的代码:
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);
}
}
}
什么问题?什么是正确的代码? 罐
答案 0 :(得分:0)
问题是您将数组作为第二个参数传递给preg_match()
,但preg_match()
将第二个参数作为String值传递。
检查将从后请求中获取所有键值的波纹管代码。
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);
}
}