<MyRusakov.ru />

Профессия Web-разработчик

Профессия Web-разработчик

Этот комплект за 8 месяцев превратит Вас в Web-разработчика с нуля. Учиться достаточно 1 час в день.

Начнёте Вы с HTML, CSS и вёрстки сайтов. Потом перейдёте к программированию и JavaScript. Затем изучите PHP, MySQL, SQL, Python. Изучите Web-фреймворки Laravel и Django. Создадите 5 своих сайтов для портфолио.

Комплект содержит:

- 540 видеоуроков

- 110 часов видео

- 1205 заданий для закрепления материала из уроков

- 5 финальных тестов

- 7 сертификатов

- 12 Бонусных курсов

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

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

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

Подписавшись по 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 раз, то - усложнить капчу Вашим способом, для предотвращения спама"

Ответить

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