Все для создания и продвижения сайтов

Верстка, программирование, SEO

Капча для сайта на php с обновлением

апчу применяют для защиты от вездесущих роботов, которые спамят сайты в автоматическом режиме.

Прежде всего, относится это к интернет-сайтам на готовых движках. Увы, их не спасают даже капчи (если в интернет попало описание "дыры" в движке). Правда если ваш ресурс уже довольно популярен, то точно найдутся люди, которые пожелают пропиариться за ваш счет. Они напишут скрипт именно под ваш движок и обязательно заспамят ваш сайт все равно.

Для защиты от всего этого следует ставить капчи. Но капчи не всегда генерируются хорошо, поэтому даже человек не может ее расшифровать. Из-за этого, рекомендуется делать специальную капчу с обновлением.

То есть если пользователь ее расшифровать не может, он жмет кнопку "Обновить", проверочный код становится иным. Реализацию именно этого мы и разберем сейчас.

Для начала разберем код генерации капчи.

Мы имеем шрифт по следующему пути: "fonts/verdana.ttf". Далее создадим специальный файл captcha.php с определенным кодом.

<?php
  session_start(); // Начинаем сессию
  $string = "";
  for ($i = 0; $i < 5; $i++)
    $string .= chr(rand(84, 132)); // Генерация случайных символов
  $_SESSION['rand_code'] = $string; // Записываем код в сессию
  $dir = "fonts/"; // Путь к папке со шрифтом
  $image = imagecreatetruecolor(170, 60); // Создаём полотно
  $color = imagecolorallocate($image, 180, 85, 85); // Задаём цвет текста
  $white = imagecolorallocate($image, 255, 255, 255); // Создаём цвет заднего фона
  imagefilledrectangle($image, 0, 0, 170, 60, $white); // Закрашиваем изображение
  // Создаём текст на картинке
  imagettftext ($image, 30, 0, 10, 40, $color, $dir."verdana.ttf", $_SESSION['rand_code']); 
  header("Content-type: image/png"); // Отправляем заголовок с типом содержимого
  imagepng($image); // Выводим изображение капчи
?>

По сути, этот скрипт включает в себя три этапа:

  1. Генерация случайной строки и запись ее в сессию.
  2. Рисование изображения.
  3. Отправка заголовка и вывод изображения.

Все эти три пункта по-разному могут быть реализованы в разных капчах, но, все три этапа всегда присутствуют. Можно взять какой-то готовый код с генерацией довольно сложной, но в то же время вполне читабельной капчи.

Далее следует заняться выводом капчи.


Теперь займемся кнопкой "Обновить". Практически, все, что нам необходимо - обновлять src у тега img. Правда если src постоянно обновлять на "captcha.php", то результата не получится, так как браузер не будет ничего обновлять (он ведь не знает, что изображение по тому же адресу будет уже другой). Поэтому надо обновлять с каким-то случайным GET-параметром.


Обновить

При нажатии на кнопку "Обновить" у тега img с капчей изменяется атрибут src. Src каждый раз разный. Это на саму капчу никакого влияния не оказывает (если мы этого не захотим, разумеется), но, для браузера это новое изображение, поэтому он его подгружает заново. В captcha.php создается абсолютно новый код, он записывается в сессию заново, заново рисуется картинка и возвращается после в тег img.

Вот так и делается полноценная капча с обновлением. Надеемся, что эта статья вам обязательно поможет.

Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.