2013-10-07 2 views
0

У меня есть код для проверки, является ли форма рассылается спамом, и если да, то остановите ее.Проверка отправки формы на список слов

Он включает в себя раздел, как это:

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

и т.д. для как много слов, как у нас в плохом списке слов

Это прекрасно работает, но неуклюж и трудно легко добавлять новые слова проверить. Было бы проще, если бы я мог создать массив и проверить любое поле против массива, но я изо всех сил пытаюсь найти пример для использования (большинство примеров все еще указывают текст для поиска, который побеждает объект в этом случае)

Может ли кто-нибудь помочь с кодом для проверки $ messagefield на массив?

(я знаю, что есть более эффективные способы, может быть, но это работает для нас в данный момент!)

ответ

1
$i = 0; 
$wordlist = array(' cialis', ' viagra'); 

while ($i < count($wordlist) && $noemail == false) { 
    if (strpos($messagefield, $wordlist[$i]) !== false) { 
    $noemail = true; 
    } 
    $i++; 
} 
+0

отлично, спасибо - это похоже на то, что мне нужно! Плюс благодаря IIya для подсказки о полосах, которые не чувствительны к регистру – user2854486

0
  1. Лучше использовать stripos (без учета регистра версии StrPos).
  2. Попробуйте следующий код:

    $ а = массив (»Сиалис, 'Виагру'); for ($ i = 0; $ i < count ($ a); $ i ++) if (stripos ($ messagefield, $ a [$ i])! == false) { $ noemail = true; break; }}

+0

На мой взгляд, это плохая практика, чтобы использовать разрыв внутри для цикла. Если вы не перебираете весь массив, используйте вместо этого. – vitorsdcs

Смежные вопросы