Здравствуйте! Помогите организовать проверку введенных данных в форме заявки на содержание определенных слов, и при совпадении форма не отправляет данные на почту. Из горячих слов: продвижение, яндекс, гугл, google, сео, seo. Своего рода защита от спама. Также чтобы была возможность легкого увеличения этого списка. Начало кода такое: PHP: <?php $to='info@test.ru'; $headers.='From: info@test.ru' . "\r\n" . 'Reply-To: info@test.ru' . "\r\n" . 'Content-Type: text/plain; charset=utf-8' . "\r\n" . 'Content-Transfer-Encoding: quoted-printablenn'; $subject='Обратный звонок с сайта test.ru'; function clean($value = "") { $value = trim($value); $value = stripslashes($value); $value = strip_tags($value); $value = htmlspecialchars($value); return $value; } function check_length($value = "", $min, $max) { $result = (mb_strlen($value) < $min || mb_strlen($value) > $max); return !$result; } if (isset($_POST['ok1'])){ $ip=$_SERVER["REMOTE_ADDR"]; $call=$_POST['call']; $massege=$_POST['call']; if(!empty($call)) { if(check_length($call, 7, 18)) { $messages = "IP-адрес: ".$ip."\nНомер телефона: ".$call."\nСообщение: ".$massege.""; mail($to,$subject,$messages,$headers); echo "<div id='alert_dialog' style='display:none;'><div id='alert_fog'></div><div id='alert_body'><span class='alert_text'>Спасибо! Ваша заявка принята!</span><span class='alert_text_2'>Наш менеджер скоро с вами свяжется.</span><hr /><span id='alert_button'><button id='alert_close'>ОК</button></span></div></div>"; } else { echo "<div id='alert_dialog' style='display:none;'><div id='alert_fog'></div><div id='alert_body'><span class='alert_text'>Внимание! Ваша заявка НЕ отправлена! Наверное, вы забыли ввести номер телефона или ввели некорректные данные.</span><span class='alert_text'>Вы ввели: $call.</span><span class='alert_text_2'>Пожалуйста, заполните форму заново. Вводите номер без скобок, в формате 89501234567</span><hr /><span id='alert_button'><button id='alert_close'>ОК</button></span></div></div>"; } } else { echo "<div id='alert_dialog' style='display:none;'><div id='alert_fog'></div><div id='alert_body'><span class='alert_text'>Внимание! Ваша заявка НЕ отправлена! Наверное, вы забыли ввести номер телефона или ввели некорректные данные.</span><span class='alert_text'>Вы ввели: $call.</span><span class='alert_text_2'>Пожалуйста, заполните форму заново. Вводите номер без скобок, в формате 89501234567</span><hr /><span id='alert_button'><button id='alert_close'>ОК</button></span></div></div>"; } } ?>
Можно разбить сроку на массив из слов, а дальше провести сравнение с заданными. Заданные держать в другом массиве, или базе данных. Ничего особо сложного нет.
Вот черновой набросок который делает то, что вам нужно используя массивы. Можно сделать с базой слов в файле CSV или базе данных или любом другом виде. PHP: <?php //Определяем массив с искомыми значениями $stopwords = array( 'SEO', 'продвижение', ); //Тестовое сообщение которое получаем из формы $message = 'Я бы хотел предложить вам услуги по продвижение вас заинтересует?'; //Функция определения совпадений в сообщении и массиве function find_words_in_message ($message, $stopwords){ $result = false; $MessageArray = explode(' ', $message); foreach ($stopwords as $value){ if (in_array($value, $MessageArray)){ $result = true; break; } } return $result; } //Проверяю работу функции $test = find_words_in_message($message, $stopwords); if ($test==true){ print 'Не отправлять письмо'; } else{ print 'Отправить письмо'; } ?>