-1

この質問は以前に文字列について尋ねられましたが、*私が確認した質問はどれもありません (モッズは削除しないか、これが重複していると教えてください)、実際に私の質問に答えません.

メールボックスから簡単にサインアップできるランディングページがあります。最近では、*、#、$、% などの外国語を入力したり、わざと冒とく的な表現を使用したりして悪用されています (いつでもわかります)。私が使用している一連の禁止文字と単語は次のとおりです。

$banned = array("f**k", "f******", "blah", "*", "#", "$", "%");

私がいくつかの文字を見逃してしまい、突然大量のアドレスがまったく意味をなさずに入力されたため、誰かが意図的に何度も何度もそれを通過しようとしていることがわかります. Forループを使用して、次の配列に禁止された単語が含まれているかどうかを確認する方法を知る必要があります

$email = $_POST['email'];

使ってみました

$arrlen = count($banned);
for($i=0; $i < $arrlen; $i++) {
    if(stripos($email, $banned[$i] !== false) {
        echo 'Banned word or character!';
    }
    else {
        echo 'Email signed up!';
    }
}

これはまったく機能しませんでした!古い関数 is_str_contain を試してみましたが、 function does not exist のエラーが返ってきました。

通常のストロボも試してみましたが、まだ喜びはありません。

4

5 に答える 5

1

すぐに使えるコードがなかったので、私はこのアイデアをいじくり回していました。

以下の作品:

$banned = array("badword1", "badword2", "blah", "*", "#", "$", "%");
$_POST['email'] = "emailbadword1@example.com";
$email = $_POST['email'];

    foreach ($banned as $ban) {
        if (stripos($email, $ban) !== FALSE) {
            echo "Match found."; 
            return true;
        }
    }
    echo "No match found.";
    return false;

さらに、コメントで述べたように。まだ行っていない場合は、電子メールで送信される確認方法を使用する必要があります。その人がメールアドレスを確認しない場合は、「プレスを停止してください」.

于 2015-09-11T12:18:06.977 に答える
0

このようにしてみてください

$banned = array("****", "*******", "blah", "*", "#", "$", "%");

$email = $_POST['email'];
foreach ($email as $em) {
    //if (strstr($em, $banned)) { // mine version
    if (strpos($em, $banned) !== FALSE) { // Yoshi version
        echo "Match found"; 
        return true;
    }
}
echo "Not found!";
return false;
于 2015-09-11T11:25:43.783 に答える
0

striposとして使用できます

foreach ($banned as $v) {
    if (stripos($email,$v) > -1){
        echo 'Banned word or character!';
    }else{
        echo 'Email signed up!';
    }
}
于 2015-09-11T11:33:52.457 に答える
0

正規表現を使用していますか?

if( !preg_match( '/(\b' . implode( '\b|\b', $banned ) . '\b)/i',
 $_POST['email'] )) {
     echo "Match found"; 
}
于 2015-09-11T11:36:07.393 に答える
0

各禁止単語を反復処理し、電子メールに禁止単語/文字が含まれているかどうかを確認する必要があります。

$banned = array("****", "*******", "blah", "*", "#", "$", "%");
$email = $_POST['email'];
$banned = false;
for($i=0; $i < count($banned); $i++) {
    if(strrpos($email, $banned[$i]) != FALSE ) {
       $banned = true;
       break;
    }
}
echo $banned ? 'Banned word or character!' : 'Email signed up!'
于 2015-09-11T11:26:00.847 に答える