SMYK
Добрый день.
Через вебформу на сайте постоянно присылаются липовые данные с одного и того же 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>";
}
?>
Знаю, что там несложное условие прописать нужно, но сам я не кодер, поэтому прошу Вашей помощи. Заранее большое спасибо
Stek
Как то так:
<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>";
}
?>