PHP

Сегодня создадим капчу, защитный код для своего сайта

И так начнем! Многие из вас кто пользуется интернетом наверняка встречались с такими защитными кодами. Зачем - это надо? Все просто, для того чтобы роботы спам пауков не добавили на ваш сайт, какую-то гадость, например вредоносный код, рекламу, кучу непонятных ссылок и так далее. Реализовать защиту для прохождения только человеком придумана так называемая - капча. Вот она (ее код) не виден паукам, а только человек может добавить материал или комментарий или другое. Защитить от спам ботов можно все. Я расскажу вам и покажу на примере своего сайта, защита которую мы сегодня разложим по полочкам установлена здесь в форме комментария ниже.

Шаг первый:

Необходимо создать php файл обработчик - назовем его например captcha.php его исходный код вот. Разберём каждую строку для настройки ниже.

Код PHP

<?php
session_start(); 
$string = ""; 
for ($i = 0; $i < 5; $i++) 
$string .= chr(rand(97, 122));  
$_SESSION[&apos;rand_code&apos;] = $string;  
$dir = "fonts/";  
$image = imagecreatetruecolor(120, 60); 
$black = imagecolorallocate($image, 0, 0, 0); 
$color = imagecolorallocate($image, 120, 172, 221); 
$white = imagecolorallocate($image, 215, 241, 242);  
imagefilledrectangle($image,0,0,399,99,$white); 
imagettftext ($image, 30, 0, 10, 40, $color, $dir."font3.ttf", $_SESSION[&apos;rand_code&apos;]);
header("Content-type: image/png"); 
imagepng($image); 
?>

Теперь разберём по строкам В первой строке необходимо подключить сессию, затем задается переменная $string пустой, так как в последствии скрипт будет генерировать здесь свои символы, в нашем случае просто набор произвольных букв. Далее в for задаем количество выводимых символов в нашем случае достаточно и 5, больше уже напряжно для пользователей. Например как для меня всегда такой лом вводить символы когда их бывает и до 10. Просто жесть, зачем такое делать смысла не вижу. Может я и не прав но увы это моё мнение. Идем далее задаем сессии массив, подключаем директорию в которой у нас лежит файл со шрифтами с расширением ...ttf в нашем случае это папка fonts. В следующих строках настраиваем ширину, высоту переменная $image, нам достаточно и 120/60 желательно делать ширину в 2 раза больше, но это зависит от количества символов в коде. Далее переменные сами говорят за себя - выборка цвета в RGB формате. $color естественно текст самого кода. Далее выбираем фон, цвет, подключаем файл стилей текста ttf и подключаем сессию. Вот в принципе основные функции этого файла. Идём дальше.

Создадим форму с проверкой через защитный код. Смотрим ниже:

Код HTML
<p class=&apos;post_comment&apos;>Добавить Ваш комментарий:</p> 
<form action="обработчик.php" method="post" name="form_com">
<p><label>Ваше имя: </label><input name="author" type="text" size="30" maxlength="30"></p>
<p><label>Текст комментария: <br> <textarea name="text" cols="32" rows="4"></textarea></label></p>
<p>Введите символы с картинки<br /></p>
<p> <img src = "images/captcha.php" /> <input style=&apos;margin-bottom:16px;&apos; name="kapcha" type="text" size="5" maxlength="5"></p>
<p><input name="sub_com" type="submit" value="Комментировать"></p>

Вот теперь рассмотрим форму. И так основные понятия формы добавления комментариев я думаю понятно всем. У нас есть форма ее обработчик файл обработчик.php и собственно сам код подключения капчи. После поля ввода текста <textarea> Мы видим подключение через изображения но файл нашей капчи. Инпут с полем ввода проверочного кода у нас с именем kapcha. Как же оно сработает. Для этого нам понадобиться в файле обработчике формы задать условие.

И так третий файл обработчик формы и само условие.

Код PHP
session_start();
 if($_POST[&apos;kapcha&apos;] != $_SESSION[&apos;rand_code&apos;]){
 echo "Капча введена неверно";
} else { 
$date = date("Y-m-d"); $result2 = mysql_query ("INSERT INTO название таблици (колонки таблици через запятую) VALUES (здесь все переменные которые нужно добавить)",$db); 
}

Что происходит здесь? Опять подключаем сессию, и если (if) введённый код соответствует сгенерированному то добавляй в базу данные формы, если нет то выводим сообщение "Капча введена неверно". Вот в принципе и все. Так сделано у меня на сайте пример вот на моих комментариях. Вопросы что не понятно задаем отвечаем. Всем успехов в разработках.

И запомните сайт который вы сделаете сами это в любом случае лучше чем использовать CMS.
Добавлено: 31 Декабря 2014 22:29:42 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...