正如其他人指出的那样,您正在反向测试该值,因为只有在未找到搜索字符串时,strpos才会返回FALSE。此外,在搜索POST变量之前,回显它,以确保它是您认为的那样。
尝试以下代码:
$bannedwords = array ("spam word", "foo", "bar", "foobar", "quarry");
if (isset($_POST['body'])) { echo 'POST: ', $_POST['body'], '<br/>'; }
else { echo 'No POST variable found!'; }
foreach ($bannedwords as $bannedphrase)
{
$pos = strpos($_POST['body'], $bannedphrase);
if ($pos === FALSE)
{
echo ' Banned word not found.';
}
else
{
echo ' Banned word found at position: ', $pos;
//require_once 'inc/mod/ban.php';
//Bans::new_ban($_SERVER['REMOTE_ADDR'], 'Suspected Spammer.', '2', $_POST['board'] == '*' ? false : $_POST['board']);
error($config['error']['bannedword']);
break; // This will exit the foreach loop
}
}