Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Форма с защитой от спама на PHP
Пример по созданию формы отправки письма (обратная связь) с антиспамом, каждый раз на картинке будет выводиться новое число. Пока пользователь не введёт цифры в поле, которые написаны на картинке, письмо не будет отправлено вам на почтовый ящик.
Создайте файл code.php, который будет генерировать число, которое пользователю нужно будет ввести в поле. Вставьте в него следующий код:
<?
Header("Pragma: no-cache");
$fp = fopen('code.txt','w');
fclose($fp);
$fp = fopen('code.txt','a');
$code="";
for ($i=1;$i<5;$i++)
fwrite($fp,mt_rand(0,9));
fclose($fp);
$fp = fopen('code.txt','r');
$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 и вставьте в него следующий код:
<?
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='0000? name=code><p>";
echo '<p><input type=\'submit\'>';
echo '</form>';
if (isset($_POST['message']))
{
$fp = fopen('code.txt','r');
$realcode = fread($fp,4);
fclose($fp);
if ($_POST['code'] === $realcode)
{
mail('admin@yandex.ru','yandex.ru',$_POST['message']);
echo "Ваше письмо было успешно отправлено";
$fp = fopen('code.txt','w');
for ($i=1;$i<5;$i++)
fwrite($fp,mt_rand(0,9));
fclose($fp);
}
else
echo "<br>Неверный код!<br>";
}
?>
Осталось только вставить изображение, на котором будет выводиться код. Я взял вот такое изображение (первое попавшиеся мне под руку), взять его можно здесь. Изображение должно быть с расширением gif, если вам нужно другое расширение или название, вам нужно открыть файл code.php и найти там строчку
$pic = ImageCreateFromgif("antispam.gif");
Header("Content-type: image/gif");
И соответственно поменять на нужные вам параметры:
antispam.gif - название файла,
image/gif - поменяйте только второе значение.
Не забудьте картинке тоже поставить CHMOD 777 или 0777.
В этом примере вместо gif-файла у меня png-файл:
$pic = ImageCreateFromPNG("image.png");
Header("Content-type: image/png");
Вас заинтересует:
.
Прокомментировать/Отблагодарить