为什么我得到一个错误代码显示(PHP警告)


Why do I get an error code shows (PHP Warning)

我的问题:

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