Вопрос по PHP - помогите сделать что-то вроде блэклиста для формочки обратной связи

SeoNatic
На сайте с 16.06.2006
Offline
154
530

Есть вот такая формочка

HTML-часть

<form method="post" action="http://сайт.ru/mail.php">

<p align="left" class="text">
ФИО<br>
<input type="hidden" name="fName[1]" value="ФИО">
<textarea rows="2" name="fData[1]" cols="41"></textarea></p>
<p align="left" class="text">
Компания<br>
<input type="hidden" name="fName[2]" value="Компания">
<textarea rows="2" name="fData[2]" cols="41"></textarea>
</p>
<p align="left" class="text">
Контактный телефон<br>
<input type="hidden" name="fName[3]" value="Контактный телефон">
<textarea rows="2" name="fData[3]" cols="41"></textarea></p>
<p align="left" class="text">
E-mail<br>
<input type="hidden" name="fName[4]" value="E-mail">
<textarea rows="2" name="fData[4]" cols="41"></textarea></p>
<p align="left" class="text">
Ваше сообщение<br>
<input type="hidden" name="fName[5]" value="Сообщение">
<textarea rows="9" name="fData[5]" cols="41"></textarea>
<input type="hidden" name="fMail" value="ТУТ АДРЕСА ПОЛУЧАТЕЛЕЙ С ФОРМЫ">
<input type="hidden" name="fTitle" value="Запрос с сайта">
<input type="hidden" name="fSubject" value="Zapros s sayta">
<input type="hidden" name="fCount" value="5">
<input type="hidden" name="fOk" value="http://сайт.ru/ok.shtml">
<input type="hidden" name="fBad" value="http://сайт.ru/bad.shtml">
</p>
<p align="left">
<input type="submit" value="Отправить сообщение">
</p>
</form>

PHP-файл

<?

$fMail = $_POST['fMail'];
$fTitle = $_POST['fTitle'];
$fSubject = $_POST['fSubject'];
$fCount = $_POST['fCount'];
$fName = $_POST['fName'];
$fData = $_POST['fData'];
$fOk = $_POST['fOk'];
$fBad = $_POST['fBad'];
$fText="$fTitle\n\n";
for ($i=1;$i<=$fCount;$i++) {$fText.=$fName[$i].": ".$fData[$i]."\n";}
$fText.="\n\n";
$fText.=date("l dS of F Y h:i:s A");
if (mail($fMail,$fSubject,$fText)) {Header("Location: $fOk");}
else {Header("Location: $fBad");}
exit;
?>

Я сам вообще ничего не понимаю в PHP. Помогите пожалуйста, что и куда дописать, чтобы при наличии в сообщении неких ключевых слов (или проверка в любом поле, или чтобы указать для каждого поля свои ключевые слова - любой вариант подойдёт) - оно не передавалось на адреса получателей?

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

PPS если вопрос сложнее чем я думаю, то рассмотрим варианты с вознаграждением за решение задачи. Только в данном случае ещё желательно чтобы всё решалось именно в PHP-части без корректировки HTML-части.

ДП
На сайте с 23.11.2009
Offline
203
#1

В начало скрипта вот такой код поставьте, словарь плохих слов в $blacklist;


function checkArray($arr){
$blacklist = array('viagra','poker');
foreach($arr as $value){
if(is_array($value)){
checkArray($value);
}else{
foreach($balcklist as $word){
if(strpos($value,$word)!==false){
die("your message");
}
}
}
}
}
checkArray($_POST);

Код не запускал - общая идея, думаю за небольшую денежку вам его допилят если надо будет.

VulkanPartner
На сайте с 27.03.2014
Offline
91
#2

SeoNatic, кроме всего прочего данные из формочек желательно на стороне PHP как-то проверять/экранировать, чтобы никакую бяку (ХSS, SQL-inj и т.д.) не словить... Даже если в базу ничего не пишется, так на всякий случай ;)

https://perestroika.team/ru/ (https://perestroika.team/ru/) Perestroika Affiliates- ведущая гемблинг-партнерка. RevShare - до 60%. CPA - до 150$.
SeoNatic
На сайте с 16.06.2006
Offline
154
#3

Дикий пионер, ну прямо в таком виде не заработало.

VulkanPartner, да сайты на статичных страничках, думаю оно и не надо)

VulkanPartner
На сайте с 27.03.2014
Offline
91
#4
SeoNatic:

VulkanPartner, да сайты на статичных страничках, думаю оно и не надо)

Если используется PHP, то сайт уже НЕ на статичных страничках. По крайней мере ту страничку, где форма, некорректно называть статичной, раз форму PHP обрабатывает. А если возможен XSS (не знаю, не проверял), то вам могут и ссылок наставить и дорвей на ваш сайт повесить... Ну, дело ваше, конечно :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий