-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 但函数不存在的错误又回来了。

我也尝试了正常的strpos,仍然没有乐趣。

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

您可以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 回答
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 回答