Проект KCAPTCHA — это готовое решение, написанное на языке PHP, которое вы можете бесплатно скачать и установить на свой сайт для защиты от спама и флуда.
Проект KCAPTCHA ставит перед собой цель предложить программисту решение с одной стороны весьма защищенное, с другой — максимально малотребовательное к ресурсам и конфигурации хостинга.
Принцип действия: скрипт заводит сессию и записывает в нее под именем $_SESSION['captcha_keystring'] случайным образом сгенерированную строку, после чего выдает изображение, содержащее эту самую строку в зашумленном виде. При проверке пользовательского ввода вам остается только прочитать из сессии кодовую строку и сравнить с тем, что ввел пользователь (подробнее об аспектах безопасности при проверке пользовательского ввода).
Системные требования: PHP версии 4.0.6 и выше с поддержкой GD версии 2. Не требуются ни библиотеки для работы со шрифтами (Libttf и др.), ни ImageMagick.
В комплект входит набор растровых шрифтов, так что скрипт, скорее всего, будет сразу готов к работе, не требуя установки дополнительных компонент.
Можно настраивать цвета и набор символов, применяемые при создании изображения.
Пример использования может быть такой:
В самом верху старницы, до html кода:
<?php
include('kcaptcha.php');
// Подключение капчи
session_start();
// включение сессии
?>
Между
<body></body>:<form action="" method="post">
<p>Enter text shown below:</p>
<p><img src="./?<?php echo session_name()?>=<?php echo session_id()?>"></p>
<!--// на основе сессии генерируется и показывается картинка //-->
<p><input type="text" name="keystring"></p>
<!--// вводятся цифры с картинки //-->
<p><input type="submit" value="Check"></p>
<!--// отсылаются //-->
</form>
<?php
if(count($_POST)>0){
if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] === $_POST['keystring']) // сравниваются на строгое совпадение введенные элементы и сгенерированные капчей
{
echo "Correct"; // совпало – "Правильно"
}else{
echo "Wrong";// не совпало – "Неправильно"
}
}
unset($_SESSION['captcha_keystring']);//удаление запомненной в сессии строки элементов
?>





Нет комментариев к этой статье.