PHP

Форма с защитой от спама на PHP

Пример по созданию формы отправки письма(обратная связь) с антиспамом, каждый раз на картинке будет выводится новое число. Пока пользователь не введёт цифры в поле, которые написаны на картинке письмо не будет отправлено вам на почтовый ящик.

Создайте файл code.php, который будет генерировать число, которое пользователю нужно будет ввести в поле. И вставьте в него следующий код:
<?php
Header("Pragma: no-cache");
$fp = fopen(&apos;code.txt&apos;,&apos;w&apos;);
fclose($fp);
$fp = fopen(&apos;code.txt&apos;,&apos;a&apos;);
$code="";
for ($i=1;$i<5;$i++)

fwrite($fp,mt_rand(0,9));
fclose($fp);
$fp = fopen(&apos;code.txt&apos;,&apos;r&apos;);
$code = fread($fp,4);
fclose($fp);
$pic = ImageCreateFromgif(dirname(__FILE__) . "/antispam.gif");
Header("Content-type: image/gif");
$color=ImageColorAllocate($pic, 0, 0, 0);
ImageString($pic,5,70,60,$code,$color);

Imagegif($pic);
ImageDestroy($pic);
?>

Затем создайте файл code.txt в который будет записываться и читаться код. В него ничего не надо вставлять. Когда загрузите его к себе на сервер поставьте ему CHMOD 777 или 0777.
После этого нам нужна форма из, которой будет происходить отправка письма на e-mail, для этого создайте файл, например: antispam2.php и вставьте в него следующий код:
<?php
Header("Pragma: no-cache");
echo "<form action=antispam2.php method=POST>";

echo "<textarea rows=4 cols=40 name=message>Текст письма</textarea>";
echo "<p><img src=code.php><p>";
echo "Введите цифры с картинки: <input type=text value=&apos;0000? name=code><p>";

echo &apos;<p><input type=\&apos;submit\&apos;>&apos;;
echo &apos;</form>&apos;;
if (isset($_POST[&apos;message&apos;]))
{
$fp = fopen(&apos;code.txt&apos;,&apos;r&apos;);
$realcode = fread($fp,4);

fclose($fp);
if ($_POST[&apos;code&apos;] === $realcode)
{
mail(&apos;admin@yandex.ru&apos;,&apos;yandex.ru&apos;,$_POST[&apos;message&apos;]);
echo "Ваше письмо было успешно отправлено";
$fp = fopen(&apos;code.txt&apos;,&apos;w&apos;);
for ($i=1;$i<5;$i++)
fwrite($fp,mt_rand(0,9));

fclose($fp);
}
else
echo "<br>Неверный код!<br>";
}
?>

Осталось только вставить изображение на котором будет выводится код. Я взял вот такое изображение(первое попавшиеся мне под руку), взять его можно здесь. Изображение должно быть с расширением gif, если вам нужно другое расширение или название, вам нужно открыть файл code.php и найти там строчку
<?php
$pic = ImageCreateFromgif("antispam.gif");
Header("Content-type: image/gif");
?>

И соответственно поменять на нужные вам параметры
antispam.gif - название файла
image/gif - поменяйте только второе значение
Не забудьте картинке тоже поставьте CHMOD 777 или 0777
В этом примере вместо gif файла у меня png файл:
<?php
$pic = ImageCreateFromPNG("image.png");
Header("Content-type: image/png");
?>
Добавлено: 31 Декабря 2014 15:25:07 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...