AAA Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Форма с защитой от спама на 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");
20.05.2014 09:51 35.00руб.Юлия
Здравствуйте! Поместила на свой сайт скрипт по примеру этого, но защита не работает. Что я не так сделала% http://www.winalitensk.ru/zaregistrirovatsa.php


.

© Copyright 2008-2016 by KDG