2015-10-20 70 views
-3

我的問題:爲什麼我得到一個錯誤代碼顯示(PHP警告)

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

顯示你在得到'$ _POST' – urfusion

回答

0

問題是您傳遞一個數組作爲preg_match()的第二個參數,但preg_match()將第二個參數作爲字符串值。

檢查將從發佈請求中獲取所有關鍵值的波紋管代碼。

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

我嘗試,但我又warrning:「PHP的警告:的preg_match()預計參數2爲字符串數組中給定的......」 –