【问题标题】:Checking form submission against a word list根据单词列表检查表单提交
【发布时间】:2013-10-07 11:45:47
【问题描述】:

我有一些代码要检查是否有表单被垃圾邮件发送,如果是,则停止发送电子邮件。

它包括这样的部分:

if(strpos($messagefield, " cialis") !== false){
$noemail = true;
}
if(strpos($messagefield, " viagra") !== false){
$noemail = true;
}

等到我们在坏词列表中的尽可能多的词

这很好用,但笨拙且难以轻松添加新单词进行检查。 如果我可以创建一个数组并根据数组检查任何字段会更容易,但我正在努力寻找一个要使用的示例(大多数示例仍然指定要搜索的文本在这种情况下会破坏对象)

任何人都可以帮助检查 $messagefield 与数组的代码吗?

(我知道也许有更好的方法,但目前这对我们有用!)

【问题讨论】:

    标签: forms spam spam-prevention


    【解决方案1】:
    $i = 0;
    $wordlist = array(' cialis', ' viagra');
    
    while ($i < count($wordlist) && $noemail == false) {
      if (strpos($messagefield, $wordlist[$i]) !== false) {
        $noemail = true;
      }
      $i++;
    }
    

    【讨论】:

    • 太好了,谢谢 - 这似乎正是我所需要的!还要感谢 IIya 关于 stripos 不区分大小写的提示
    【解决方案2】:
    1. 最好使用 stripos(strpos 的不区分大小写版本)。
    2. 试试下面的代码:

      $a = array('cialis', '伟哥'); 对于 ($i = 0; $i

    【讨论】:

    • 在我看来,在 for 循环中使用 break 是一种不好的做法。如果您不循环遍历整个数组,请改用 while。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多