<MyRusakov.ru />

PHP и MySQL с Нуля до Гуру 2.0

PHP и MySQL с Нуля до Гуру 2.0

Данный курс научит Вас программировать на самом популярном Web-языке в мире - PHP. Курс состоит из 11 разделов, в которых с нуля рассказывается и показывается процесс написания различных скриптов на PHP.

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

Почти к каждому уроку идут упражнения.

Просмотрев данный курс, Вы сможете создавать абсолютно любые PHP-сайты любой сложности.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Капча с арифметическими операциями

Капча с арифметическими операциями

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

Привожу код такой капчи:

<?php
  session_start(); // Начинаем сессию
  $number_1 = rand(1, 100); // Генерируем 1-е случайное число
  $number_2 = rand(1, 100); // Генерируем 2-е случайное число
  $_SESSION['rand_code'] = $number_1 + $number_2; // Записываем их сумму в сессию
  $dir = "fonts/"; // Директория с шрифтами
  $image = imagecreatetruecolor(200, 60); // Создаём изображение
  $color = imagecolorallocate($image, 200, 100, 90); // Задаём 1-й цвет
  $white = imagecolorallocate($image, 255, 255, 255); // Задаём 2-й цвет
  imagefilledrectangle($image, 0, 0, 399, 99, $white); // Делаем капчу с белым фоном
  imagettftext ($image, 30, 0, 10, 40, $color, $dir."verdana.ttf", "$number_1 + $number_2"); // Пишем текст
  header("Content-type: image/png"); // Отсылаем заголовок о том, что это изображение png
  imagepng($image); // Выводим изображение
?>

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

Выводится капча элементарно:

<img src="captcha.php" alt="" />

Проверка капчи тоже не намного сложнее:

<?php
  session_start(); // Начинаем сессию
  $captcha = $_POST["captcha"]; // Ответ, который ввёл пользователь
  /* Проверяем правильность ввода капчи (не забывайте проверять на "пустое значение", это очень важно!) */
  if (($capctha == $_SESSION["rand_code"]) && ($captcha != "")) echo "Капча введена правильно";
  else echo "Капча введена неправильно";
?>

Не думаю, что у человека, который знаком хоть немного с PHP, возникнут хоть какие-то трудности с пониманием создания капчи с арифметическими операциями.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (6):

Default Default 12.06.2012 19:11:20

После Вашей стать о регистрации и авторизации перешел сразу к капче. Статья хорошая и понятная, только дело вот в чем $dir = "fonts/" ; // Директория с шрифтами <<< дириктория эта папка в которой лежит нобходимый шрифт? и где взять тот или иной шрифт? а еще можно же создать массив в котором будут 4 интекса, это плюс, минус, умножить, делить и через Вами упомянутую в статье случаного вывода функции rand() выводить случайное арифметическое значение?)

Ответить

Admin Admin 12.06.2012 20:02:59

http://myrusakov.ru/kapcha-php.html

Ответить

kuller kuller 23.06.2012 10:17:29

боты легко решат эту капчу.... надо шума добавить на картинку. можно ещё зделать смену цвета фона рандом. Для этого где задаем цвет заместо одного цвета прописать rand(1,300); уже интересней становится ))) $color = imagecolorallocate($image, rand(1,300), rand(1,300), rand(1,300)); // Задаём 1-й цвет $white = imagecolorallocate($image, rand(1,300), rand(1,300), rand(1,300)); // Задаём 2-й цвет

Ответить

wanderer wanderer 07.07.2012 21:04:36

Хороший урок=)

Ответить

Admin Admin 07.07.2012 21:10:53

Теоретически, боты решат любую капчу, а данная капча служит для защиты от кого попало, коих 99%, поэтому её достаточно. Впрочем, если нужно ещё 0.9%, то можете и дальше защищать, до 99.9%, а взамен выслушивая справедливое недовольство пользователей.

Ответить

Нур-Мохмад Нур-Мохмад 12.07.2012 16:11:01

Сергей, лучше оставить эту капчу, а если Вы хотите дополнительную сложность и защиту, тогда Вы можете сделать такое условие: "Если пользователь с одного IP отправляет одну форму более 5 раз, то - усложнить капчу Вашим способом, для предотвращения спама"

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.