私のウェブサイトはかなりの量のスパムを受けています。php strposは値を返さない
一部を除外するには、投稿の本文に特定の単語が含まれていないことを確認したいと考えました。そうした場合、ユーザーに瞬時(一時的)禁止を与えます。
私のコードが含まれています。返された位置を示すためにエコーラインを追加し、テストワードを含むか含まなかった投稿でテストしました。何らかの理由で、常にnullを返し、何も表示されません。この関数に$ _POST変数を渡すことは許されていませんか?
コード:
$bannedwords = array ("spam word", "foo", "bar", "foobar", "quarry");
foreach ($bannedwords as $bannedphrase) {
$pos = strpos($_POST['body'], $bannedphrase);
echo 'The position is: ' . $pos;
if ($pos === FALSE){
//require_once 'inc/mod/ban.php';
//Bans::new_ban($_SERVER['REMOTE_ADDR'], 'Suspected Spammer.', '2', $_POST['board'] == '*' ? false : $_POST['board']);
error($config['error']['bannedword']);
}
}
は編集:私は、コードを壊して何を考えていませんが、私は、ここに論理エラーを見ます。多分それはしかし、です。ユーザーが配列の早い段階で禁止されている場合は、if文が続行されます。これは、後でnull値が表示される理由です。
はその反転しないのですか?その 'false'が何も見つからなかったということを意味するならば、' $ _POST ['body'] 'が空でないことを確かめて、それらの文字のケースを心に入れてください – Ghost
3つは??? – statosdotcom
@statosdotcom 3つの等号が間違っていますか? – Webeng