Подтвердить текстовое поле при нажатии кнопки Отправить

Я разрабатываю веб-сайт, который позволяет пользователю отправлять отзывы в систему. Я создал форму обратной связи, используя textarea и кнопку для отправки. Самое главное, когда пользователь нажимает кнопку «Отправить», если пользователь вводит некоторые слова, которые я не хочу им вводить, эта обратная связь не будет отправляться в систему; он будет предупреждать пользователя о том, чтобы выкинуть это слово перед подачей заявки.

С тех пор я просто создаю простой код, который будет эхом предупреждать, если пользователь вводит слово, которое я не хочу, чтобы они вводили форму обратной связи.

Вот мой код

<form action="main.php" method="post"> <textarea cols='10' rows='5' name='text'></textarea> <br/> <input type='submit' name='add' Value='Add to list' /> </form> <?php if (isset($_POST['add'])) { $banned = array('dog', 'cat', 'cow'); // Add more $entry = $_POST['add']; foreach($banned as $word): if (strpos($entry, $word) !== false) die('Contains banned word'); endforeach; } ?> 

Это не работа. Может ли кто-нибудь помочь мне решить эту проблему?

Заранее спасибо.

Попробуйте

 $entry = $_POST['text']; // Not $_POST['add']; foreach ($banned as $word): if (strpos($entry, $word) !== false) { echo 'Contains banned word'; exit; } endforeach; 

Ваша $entry будет значением текстового поля, т.е. $ _POST ['text'] not $ _POST ['add']

ИСПОЛЬЗОВАТЬ функцию in_array http://php.net/manual/ru/function.in-array.php

 $os = array("Mac", "NT", "Irix", "Linux"); if (in_array("Irix", $os)) { echo "Got Irix"; } 
 <?php if(isset($_POST['add'])){ $banned = array('dog', 'cat', 'cow'); // Add more $entry = $_POST['text']; if(in_array($entry,$banned)) { die('Contains banned word'); } } ?> 

Вы хотите сделать цензуру слов. Для этого используйте функцию str_ireplace (). Я даю пример кода для него ниже. Эта функция выполняет замену слова другим.

 <?php $find=array('galaxy', 'planet', 'moon'); $replace=array('spiral', 'earth', 'satelite'); if (isset($_POST['userinput'])&&!empty($_POST['userinput'])) { $user=$_POST['userinput']; $user_new=str_ireplace($find, $replace, $user); echo $user_new; } ?> <hr> <form action="index.php" method="POST"> <textarea cols="50" rows="10" name="userinput"><?php echo $user; ?></textarea><br /> <input type="submit" value="submit" /> </form> 

Вместо отправки кода на сервер при каждом вводе текста я предлагаю вам использовать Javascript на стороне клиента и отправлять его только в том случае, если он прошел проверку.

HTML

 <form action="main.php" method="post"> <input type="text" onchange="validate_function(this)"> //works with text area too. <input type='submit' name='add' Value='Add to list' /> </form> 

Javascript

 validate_function(a) { r=0; banned = array('dog', 'cat', 'cow'); var lines = a.val().split('\n'); for(var x=0;x<banned.length;x++) { for(var i = 0;i < lines.length;i++) { if (lines[i].indexOf(banned[x]) > -1) { r=1; break; } else { } } if(r==1) break; } if( r==0) return true; else return false; } 

Все, что вам нужно сделать, это прекратить отправку формы, если у пользователя есть запрещенное слово

 <form action="main.php" method="post"> <textarea cols='10' rows='5' name='text' id='text'></textarea> <br/> <input type='submit' name='add' Value='Add to list' onclick='validate()' /> </form> 

в вашем javascript

 <script> function validate() { var text = document.getElementById('text').value; var banned = new Array('dog', 'cat', 'cow'); for (var x in banned) { if ( strpos(text,banned[x],0) ) { continue; // will stop the loop return false; // will stop everything and will not let the form post to php } } return true; // will return true and will post the form to php } // Custom Function function strpos (haystack, needle, offset) { // http://phpjs.org/functions/strpos/ var i = (haystack + '').indexOf(needle, (offset || 0)); return i === -1 ? false : i; } </script> 

Я надеюсь, это поможет

PS: Функция strpos была взята из phpjs.org