С нами с 07.06.08
Сообщения: 778
Рейтинг: 395
|
Добавлено: 07/04/14 в 19:30 |
Добрый день.
Через вебформу на сайте постоянно присылаются липовые данные с одного и того же IP. Заблокировал его через htaccess, но на след. день такой же объем спама начал литьсяс другого IP (даже из другой страны, так что подсеть заблокировать не вариант). Идея в следующем. У меня при заполнении формы вылетает алерт о успешности отправки и происходит отправка письма. Внизу приведен код формы.
IP спаммера известен. Как его доработать так, чтобы спаммер получил алерт об успешности, но письмо от него бы не отправлялось
Код: [развернуть] |
<script>
function Formdata(data){
/* если не заполнено поле Ваше имя, длина менее 3-x*/
if (data.name != null && data.name.value.length < 3 )
{
alert('Заполните поле "Ваше имя"');
return false;}
/* если не заполнено поле Сообщение */
if (data.tel != null && data.tel.value.length < 3)
{
alert('Заполните поле "Телефон"');
return false;}
}
</script>
<?php
if(@$_POST["hidden"])
{
$dt=date("d F Y, H:i:s"); // дата и время
$mail="mymail@yandex.ru"; // e-mail куда уйдет письмо
$title=""; // заголовок(тема) письма
$fnm=$_POST["name"];
$fnm=htmlspecialchars($fnm); // обрабатываем
$text=$_POST["tel"];
$ip=$_SERVER["REMOTE_ADDR"];
$mess="<b>Имя:</b> $fnm<br>";
$mess.="<b>Телефон:</b> $text<br>";
$mess.="<b>IP адрес:</b> $ip<br>";
if($_POST["mai"]){
$mai=$_POST["mai"];
$mess.="<b>Почта:</b> $mai<br>";
}
if($_POST["time"]){
$time=$_POST["time"];
$mess.="<b>Время звонка:</b> $time<br>";
}
if($_POST["dop"]){
$dop=$_POST["dop"];
$mess.="<b>Дополнительно:</b> $dop<br>";
}
// ссылка на e-mail
$mess.=" $dt";
$headers="MIME-Version: 1.0\r\n";
$headers.="Content-type: text/html; charset=windows-1251\r\n"; //кодировка
$headers.="From: mysite.ru\r\n"; // откуда письмо (необязательнакя строка)
mail($mail, $title, $mess, $headers); // отправляем
$mail="info@mysite.ru"; // e-mail куда уйдет письмо
mail($mail, $title, $mess, $headers); // отправляем
// выводим уведомление и перезагружаем страничку
print"
<script language='Javascript' type='text/javascript'>
<!--
alert ('Ваше сообщение отправлено! Спасибо!');
function reload()
{location = \"index.php\"};
setTimeout('reload()', 0);
-->
</script>";
}
?> |
Знаю, что там несложное условие прописать нужно, но сам я не кодер, поэтому прошу Вашей помощи. Заранее большое спасибо
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 07/04/14 в 20:11 |
Как то так:
Код: [развернуть] | <script>
function Formdata(data){
/* если не заполнено поле Ваше имя, длина менее 3-x*/
if (data.name != null && data.name.value.length < 3 )
{
alert('Заполните поле "Ваше имя"');
return false;}
/* если не заполнено поле Сообщение */
if (data.tel != null && data.tel.value.length < 3)
{
alert('Заполните поле "Телефон"');
return false;}
}
</script>
<?php
$bad_ip = array(
'1.2.3.4', # сколько ip надо, столько строк таких и повторить
)
if(@$_POST["hidden"])
{
$dt=date("d F Y, H:i:s"); // дата и время
$mail="mymail@yandex.ru"; // e-mail куда уйдет письмо
$title=""; // заголовок(тема) письма
$fnm=$_POST["name"];
$fnm=htmlspecialchars($fnm); // обрабатываем
$text=$_POST["tel"];
$ip=$_SERVER["REMOTE_ADDR"];
$mess="<b>Имя:</b> $fnm<br>";
$mess.="<b>Телефон:</b> $text<br>";
$mess.="<b>IP адрес:</b> $ip<br>";
if($_POST["mai"]){
$mai=$_POST["mai"];
$mess.="<b>Почта:</b> $mai<br>";
}
if($_POST["time"]){
$time=$_POST["time"];
$mess.="<b>Время звонка:</b> $time<br>";
}
if($_POST["dop"]){
$dop=$_POST["dop"];
$mess.="<b>Дополнительно:</b> $dop<br>";
}
// ссылка на e-mail
$mess.=" $dt";
$headers="MIME-Version: 1.0\r\n";
$headers.="Content-type: text/html; charset=windows-1251\r\n"; //кодировка
$headers.="From: mysite.ru\r\n"; // откуда письмо (необязательнакя строка)
if (false == in_array($_SERVER['REMOTE_ADDR'], $bad_ip)) {
mail($mail, $title, $mess, $headers); // отправляем
$mail="info@mysite.ru"; // e-mail куда уйдет письмо
mail($mail, $title, $mess, $headers); // отправляем
} else {
// спам, игнорируем или что там еще надо сделать.
}
// выводим уведомление и перезагружаем страничку
print"
<script language='Javascript' type='text/javascript'>
<!--
alert ('Ваше сообщение отправлено! Спасибо!');
function reload()
{location = \"index.php\"};
setTimeout('reload()', 0);
-->
</script>";
}
?> |
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
6
|
|
|
С нами с 07.06.08
Сообщения: 778
Рейтинг: 395
|
Добавлено: 07/04/14 в 21:36 |
Огромное спасибо, пошел тестировать))
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |