Как установить капчу на сайт


Как установить капчу на сайт

Доброго и удачного всем дня! Сегодня я хочу рассказать о том как установить капчу на сайт. Но сначала о том, что же это такое - капча.

Captcha от английского completely automated public Turing test to tell computers and humans apart — полностью автоматизированный публичный тест Тьюринга для различия компьютеров и людей. Капча используется для того, чтобы определить, кем является пользователь системы: человеком или компьютером. Основная идея заключается в том, чтобы предложить пользователю такую задачу, которую с лёгкостью может решить человек, но которую несоизмеримо сложнее решить компьютеру. В основном это задачи на распознавание символов.

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

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

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

Он состоит всего из трех небольших файлов:
  • index.php
  • handler.php
  • img.php

index.php


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

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

А еще в нем находится сама форма отправки, в которой выводится рисунок - капча, которая содержит сгенерированную последовательность символов - за это отвечает файл img.php.

Обработчиком формы, то есть программой которая принимает и обрабатывает отправленные данные, является файл handler.php.

Свернуть код:
<? session_start(); // набор символов $alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; $secret = ""; // формируем строку из 5 символов, которая будет отображаться на картинке for($i=0;$i<5;$i++) $secret.= $alpha[rand(0,strlen($alpha)-1)]; // генерируем новый SESSIONID для того, чтобы при // перезагрузке страницы старая сессия затиралась session_id(md5(microtime()*rand())); // сохраняем сгенерированную строку в переменной сессии $_SESSION['secret'] = $secret; ?> <form action="handler.php" method="post"> Имя : <input type="text" name="name"> Пароль : <input type="text" name="pass"> Число на картинке : <input type="text" name="secret"> <input type="submit" name="send" value="Отправить"> </form> <img src="img.php?sid=<?=session_id();?>">


handler.php


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

Свернуть код:
<?php session_start(); if($_POST['secret'] == $_SESSION['secret']) { echo "Имя - $_POST[name] "; echo "Пароль - $_POST[pass] "; } else { echo "Вы неверно ввели число на картинке!"; } ?>


img.php


img.php - в первую очередь стартуем сессию с полученным идентификатором сессии. Затем создаем картинку с указанными размерами. Задаем цвет фона, текста и линий, которые усложнят задачу распознавания. А указывая image/gif content-type с помощью header(), мы говорим скрипту отправить GIF-изображение прямо в браузер.

Свернуть код:
<? // стартуем сессию с полученным SESSIONID session_id($_GET['sid']); session_start(); // создаем картинку: $im = imagecreate(80,31); // серый фон фон... imageColorAllocate($im,246,246,246); // ... с синим: $textcolor = imageColorAllocate($im,0,0,255); // ... текстом $line = imageColorAllocate($im,255,0,0); imagestring($im,20,20,10,$_SESSION['secret'],$textcolor); // ... и красными линиями, // которые усложнят задачу "распознавания" <p></p> // картинки в автоматическом режиме $line = imageColorAllocate($im,255,0,0); imageline($im,20,0,80,31,$line); imageline($im,0,10,50,0,$line); imageline($im,90,5,40,31,$line); imageline($im,0,31,70,0,$line); // выводим изображение в браузер imageGif($im); header("Content-Type: image/gif"); ?>

Ну а в итоге, при запуске этого скрипта, у вас должно получится следующее:

Как установить капчу на сайт-Результат

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

А в статье "Защита от спама на JavaScript" я расскажу о предельно простом, но очень эффективном методе борьбы со спамом с помощью JavaScript.

Ну вот собственно на этом сегодня все. Появились вопросы - задавайте!

Автор: Сергей Зарубин

Дата: 2011-08-22

Колличество просмотров: 37821

Нравится

Комментарии к заметке:

Комментарий добавил(а): Екатерина
Дата: 2011-12-06

Извините,Сергей, но мне, как чайнику, просто необходимо узнать, куда эти коды вставлять и как это делается. Лучше видео :)Подскажете?

Комментарий добавил(а): Сергей Зарубин
Дата: 2011-12-06

Попробуйте сделать так:
1. Создайте три страницы в любом текстовом редакторе index.php, handler.php и img.php
2. Скопируйте туда код c сайта.
3. Запустите файл index.php

Для запуска файла у вас должент быть установлен сервер
Установка срвера пошагово описана в посте:
Установка сервера LAMP (PHP+Apache2+Mysql) c настройкой виртуальных хостов

А что касается видео, то планирую начать выкладывать подобные уроки
после Нового года.

Комментарий добавил(а): Рэд
Дата: 2012-02-23

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

Комментарий добавил(а): ирина
Дата: 2012-03-31

и у меня не показывате!!!

Комментарий добавил(а): ирин
Дата: 2012-03-31

а нет.. все норм. спасибо автору за статью)))

Комментарий добавил(а): SlootLite
Дата: 2012-05-21

А случайно unset для сессии делать не нужно?

Комментарий добавил(а): Сергей Зарубин
Дата: 2012-05-21

Стоки из кода :

// генерируем новый SESSIONID для того, чтобы при
// перезагрузке страницы старая сессия затиралась
session_id(md5(microtime()*rand()));

надеюсь дают ответ на ваш вопрос.

Комментарий добавил(а): Дмитрий
Дата: 2012-06-10

Спасибо огромное! Отличный и простой способ создания капчи, как раз то, что я искал.

Комментарий добавил(а): Михаил
Дата: 2012-06-30

У меня ошибка :(
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/evakazan/public_html/otzivy.php:5) in /home/evakazan/public_html/otzivy.php on line 220

Комментарий добавил(а): Сергей Зарубин
Дата: 2012-06-30

Такое сообщение означает, что в файле, путь к которому указан в скобках (/path/to/file.php), произошла преждевременная передача данных для передачи браузеру, в результате чего в файле, имя которого приведено в конце сообщения (/path/to/file.php), нарушилась работа функции, упомянутой после слова «Warning» — в данном примере session_start.

Преждевременная передача данных браузеру может быть вызвана несколькими причинами:

Неправильное изменение исходного кода или повреждение файла.
Проблема может быть вызвана наличием в начале модифицированного PHP-файла служебного символа BOM (byte order mark), автоматически добавленного текстовым редактором, с помощью которого вносились изменения в исходный код скриптов. Чтобы удалить этот символ и устранить ошибку, откройте и снова сохраните файл, путь к которому указан в скобках в сообщении об ошибке — при этом используйте редактор кода, в котором отключена поддержка BOM. Например Notepad++.
Произошел вывод сообщения о другой ошибке PHP. В этом случае необходимо выяснить текст такого сообщения и устранить причину ошибки либо временно отключить отображение сообщений PHP в браузере до устранения причины и настроить сохранение таких сообщений в специальный лог-файл.

Комментарий добавил(а): Владимир
Дата: 2012-08-11

Спасибо. Все получилось.

Комментарий добавил(а): Алексей
Дата: 2012-11-01

Хорошо когда <?.....?> не прерывается.
А как быть с таким вариантом?
Описывать долго - поэтому кину ссылку на форму с моей проблемой(не сочтите за спам).
http://forum.php.su/topic.php?forum=60&topic=4904

заранее благодарен

Комментарий добавил(а): Коля
Дата: 2012-12-15

Можно ли отделить форму в html, а скрипт php обработчик в отдельный файл?

Комментарий добавил(а): Андрей Айдар
Дата: 2013-01-25

Вот хочу представить ещё интересную реализацию капчи на сайте http://aydar.pp.ua/view_post.php?id=15

Комментарий добавил(а): Денис
Дата: 2013-02-28

Все это сделал но изображение не выводиться. что делать?

Комментарий добавил(а): Денис
Дата: 2013-02-28

Все, разобрался. На сервере где куплен хостинг выключена библиотека GD. А так все работает. Автору спасибо очень помог.

Комментарий добавил(а): April 1 Humor
Дата: 2014-05-21

Спасибо за статью, очень помогла. Если кому интересно можно почитать http://angliiskii.net/post/81380720164

Комментарий добавил(а): tElenaSn
Дата: 2017-06-05

Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

Вам достаточно просто зарегистрироваться на нашем сервисе. > http://oplata-vklike.tk/ <

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

Комментарий добавил(а): vegorSn
Дата: 2017-06-06

Предлагаем Вам работу без вложений, на системе автоматического приёма и обработки заказов.

Мы предоставляем:

- Наш лицезионный софт.
- документы со всей необходимой доп. информацией.
- постоянная техническая поддержка.

Оплата от 5500 в день. Выплаты ежедневно.

Более подробная информация на нашем сайте >> obrabotka.zarplatt.ru <<

Комментарий добавил(а): vegorSn
Дата: 2017-06-10

Ведущая компания в России и странах СНГ по продаже авиабилетов «Airline»

Крупнейшая международная компания по продаже А/В билетов
срочно набирает сотрудников на постоянную основу для несложной
работы через интернет, с ежедневными выплатами до 11 000 руб.

Работая в нашей компании Вы получаете:

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

Пройдите регистрацию у нас на сайте. > www.Airline-Rabota.tk <

Без вложений, опыт и профессиональные навыки не требуются!

Комментарий добавил(а): wElenaSn
Дата: 2017-06-13

Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

достаточно просто зарегистрироваться на нашем сервисе. > www.oplata-vklike.tk <

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

Комментарий добавил(а): Vaddim
Дата: 2017-06-21

Наша компания Реал занимается производством и продажей сумок спортивных, хозяйственых,рюкзаков. Производством сумок на нашем предприятии занимаются опытные мастера.За эти годы налажены регулярные бесперебойные поставки товара, обеспечивающие нашим клиентам постоянный ассортимент.

Комментарий добавил(а): palinaSn
Дата: 2017-06-22

Предлагаем Вам работу без вложений, на системе автоматического приёма и обработки заказов.

Мы предоставляем:

- Наш лицезионный софт.
- документы со всей необходимой доп. информацией.
- постоянная техническая поддержка.

Оплата от 5500 в день. Выплаты ежедневно.

Более подробная информация на нашем сайте >> http://obrabotka.zarplatt.ru/ <<

Комментарий добавил(а): segorSn
Дата: 2017-06-23

Стабильная работа с обучением, ежедневная зарплата!

Вы работаете дома! Полностью честно и прозрачно;
Доступно для всех - неважно кто вы и какой у вас опыт работы в интернете!
Вы будете зарабатывать: свыше четырёх тысяч рублей в день!
Сложность: Несложно!
Оплата: - уже на следующий деньги у вас на счету!

Ознакомтесь с условиями у нас на сайте. > www.realno-money.tk < Скопируйте и вставьте в адресную строку Вашего браузера.

Комментарий добавил(а): valinaSn
Дата: 2017-06-25

Уникальный сервис помощи получения кредита от частного инвестора, а так же кредитных организаций. Подходит как компаниям, так и частным лицам.

Займ от частного инвестора.

Наша компания помогает встретиться инвестору и заёмщику.

Прямой контакт с инвестором
Любая кредитная история
Нужен только паспорт
Работаем с частными лицами и фирмами
Любой регион
Сумма от 5,000 до 50,000,000 руб
Процент одобрения 97%

Преимущества:

- Без залога и поручительства!
- Ставка - всего от 1% в месяц!
- Без скрытых платежей и комиссий!

Оформите заявку на нашем сайте. > www.ch-investor.tk <

Комментарий добавил(а): qalinaSn
Дата: 2017-06-26

Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

Вам достаточно просто зарегистрироваться на нашем сервисе. > www.oplata-vklike.tk <

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

Комментарий добавил(а): vlizaSn
Дата: 2017-06-30

Предлагаем Вам работу без вложений, на системе автоматического приёма и обработки заказов.

Мы предоставляем:

- Наш лицезионный софт.
- документы со всей необходимой доп. информацией.
- постоянная техническая поддержка.

Оплата от 5500 в день. Выплаты ежедневно.

Более подробная информация на нашем сайте >> www.obrabotka-zakazow.tk <<

Комментарий добавил(а): nveraSn
Дата: 2017-06-30

Несложная работа с обучением, ежедневная зарплата!

Вы работаете дома! Полностью честно и прозрачно;
Доступно для всех - неважно кто вы и какой у вас опыт работы в интернете!
Вы будете зарабатывать: свыше четырёх тысяч рублей в день!
Сложность: Несложно!
Оплата: - уже на следующий деньги у вас на счету!

Более подробная информация на нашем сайте. > realno-money.tk < Скопируйте и вставьте в адресную строку Вашего браузера.

Комментарий добавил(а): vElenaSn
Дата: 2017-07-01

Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

Вам достаточно просто зарегистрироваться на нашем сервисе. > oplata-vklike.tk <

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

Комментарий добавил(а): vElenaSn
Дата: 2017-07-03

Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

достаточно просто зарегистрироваться на нашем сервисе. > oplata-vklike.tk <

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

Комментарий добавил(а): qannaSn
Дата: 2017-07-04

Ведущая компания в России и странах СНГ по продаже авиабилетов «Airline»

Крупнейшая международная компания по продаже А/В билетов
срочно набирает сотрудников на постоянную основу для несложной
работы через интернет, с ежедневными выплатами от 11 000 руб.

Работая в нашей компании Вы получаете:

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

Пройдите регистрацию на нашем сайте. > http://airline-rabota.tk/ <

Без вложений, опыт и профессиональные навыки не требуются!

Комментарий добавил(а): lion
Дата: 2017-07-06

Интересная подработка на дому. Без навыков. Стабильный доход от 6000 рублей в сутки. Эта система доступна абсолютно для Всех.
Вам не обязательно трудиться целыми днями! Вполне достаточно уделять работе пару часов в день.
Не нужно задумываться, о том что в Сети интернет подработать невозможно, в Интернете заработать можно!
Простыми и доступными путями. Самое главное, гарантированно!
График Вашей работы, устанавливаете самостоятельно, по своим возможностям.
Более подробная информация на нашем сайте. > http://oplata-vklike.tk < скопируйте и вставьте в адресную строку вашего браузера.

Комментарий добавил(а): Anton
Дата: 2017-07-07

Всё равно одна реклама, а я хоть капчу затестю

Комментарий добавил(а): pElenaSn
Дата: 2017-07-09

Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

Вам достаточно просто зарегистрироваться на нашем сервисе. > oplata-vklike.tk <

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

Комментарий добавил(а): lalinaSn
Дата: 2017-07-10

Несложная работа с обучением, высокая оплата!

Вы работаете дома! Полностью честно и прозрачно;
Доступно для всех - неважно кто вы и какой у вас опыт работы в интернете!
Вы будете зарабатывать: свыше четырёх тысяч рублей в день!
Сложность: Несложно!
Оплата: - уже на следующий деньги у вас на счету!

Более подробная информация на нашем сайте. > http://realno-money.tk/ < Скопируйте и вставьте в адресную строку Вашего браузера.

Комментарий добавил(а): pElenaSn
Дата: 2017-07-12

Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

достаточно просто зарегистрироваться на нашем сервисе. > oplata-vklike.tk <

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

Комментарий добавил(а): nElenaSn
Дата: 2017-07-16

Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

достаточно просто зарегистрироваться на нашем сервисе. > http://oplata-vklike.tk/ <

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

Комментарий добавил(а): nalinaSn
Дата: 2017-07-17

Несложная работа с обучением, высокая зарплата!

Вы работаете дома! Полностью честно и прозрачно;
Доступно для всех - неважно кто вы и какой у вас опыт работы в интернете!
Вы будете зарабатывать: свыше четырёх тысяч рублей в день!
Сложность: Несложно!
Оплата: - уже на следующий деньги у вас на счету!

Более подробная информация у нас на сайте. > www.realno-money.tk < Скопируйте и вставьте в адресную строку Вашего браузера.

Комментарий добавил(а): qalinaSn
Дата: 2017-07-18

Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

Вам достаточно просто зарегистрироваться на нашем сервисе. > www.oplata-vklike.tk <

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

Комментарий добавил(а): malinaSn
Дата: 2017-07-19

Ведущая компания в России и странах СНГ по продаже авиабилетов «Airline»

Крупнейшая международная компания по продаже А/В билетов
срочно набирает сотрудников на постоянную основу для несложной
работы через интернет, с ежедневными выплатами от 11 000 руб.

Работая в нашей компании Вы получаете:

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

Пройдите регистрацию у нас на сайте. > www.airline-rabota.tk <

Без вложений, опыт и профессиональные навыки не требуются!

Комментарий добавил(а): tElenaSn
Дата: 2017-07-28

Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

достаточно просто зарегистрироваться на нашем сервисе. > www.oplata-vklike.tk <

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

Комментарий добавил(а): vElenaSn
Дата: 2017-07-30

Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

Вам достаточно просто зарегистрироваться на нашем сервисе. > oplata-vklike.tk <

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

Комментарий добавил(а): AlekseiCaunc
Дата: 2017-09-10

Привлекательность аренды крана-манипулятора в СПб подтверждается самими благодарными клиентами, которые нуждались именно в таком виде сервиса. Рентабельность говорит сама за себя, когда со всеми работами, справляется всего одна машина. Вам только стоит ознакомиться со способом оформления заказа, и вы сэкономите массу денег! kr78mn47

Комментарий добавил(а): veronica
Дата: 2017-10-02

Платим за лайки! - Ежедневные выплаты!

Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.
Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.
Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,
достаточно просто зарегистрироваться на нашем сервисе. > oplata-vklike.tk <
Вывод заработанных средств ежедневно в течении нескольких минут.



Добавить новый комментарий


Введите число с картинки:

captcha