Есть ли бесплатная библиотека PHP, которая может быть использована для капчи - PullRequest
2 голосов
/ 03 сентября 2010

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

Я обнаружил, что функция CAPTCHA на mail.yahoo.com разумна, и я не знаю, могу ли я использовать ее бесплатно, как reCAPTCHA.

Спасибо

Обновление

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

Ответы [ 5 ]

6 голосов
/ 04 сентября 2010

Большинство хостов допускают манипулирование изображениями GD для PHP. Его на самом деле очень легко выучить, и вы можете сделать свой собственный сценарий капчи через 10 или 20 минут. То есть, если вы уже знаете PHP.

Это довольно простой пример скрипта: linky

Пример:

Example Captcha

Код:

<?php
/*
Author: Simon Jarvis
Modified: Azmisov
Copyright: 2006 Simon Jarvis
License: GPL2
Link: http://www.white-hat-web-design.co.uk/articles/php-captcha.php
*/

//OPTIONS
$dwidth = 260;
$dheight = 90;
$dcharacters = 6;
//https://fontlibrary.org/en/font/jellee-typeface
$font = './jellee_roman.ttf';
$possible = '234679ABCDEHJLMNPTUVWXY';

//CODE
session_start();
function generateCode($characters) {
    global $possible;
    $code = '';
    $len = strlen($possible)-1;
    for($i=0; $i<$characters; $i++)
        $code .= substr($possible, mt_rand(0, $len), 1);
    return $code;
}
function createCaptcha($width,$height,$characters) {
    global $font;
    $code = generateCode($characters);
    $_SESSION['captcha'] = $code;
    //font size will be 75% of the image height
    $font_size = $height * 0.4;
    $image = imagecreate($width, $height) or die('Cannot initialize new GD image stream');
    //set the colours
    $background_color = imagecolorallocate($image, 20, 58, 78);
    $text_color = imagecolorallocate($image, 74, 143, 200);
    $noise_color = imagecolorallocate($image, 100, 120, 200);
    //generate random dots in background
    for( $i=0; $i<($width*$height)/3; $i++)
        imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
    //generate random lines in background
    for($i=0; $i<($width*$height)/150; $i++)
        imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);
    //create textbox and add text
    $textbox = imagettfbbox($font_size, 0, $font, $code) or die('Error in imagettfbbox function');
    $x = ($width - $textbox[4])/2;
    $y = ($height - $textbox[5])/2;
    imagettftext($image, $font_size, 0, $x, $y, $text_color, $font , $code) or die('Error in imagettftext function');
    //generate random dots/lines in foreground
    for($i=0; $i<2; $i++)
        imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);
    for( $i=0; $i<40; $i++)
        imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 3, 3, $noise_color);
    //Apply filters
    imagefilter($image, IMG_FILTER_CONTRAST, 1);
    imagefilter($image, IMG_FILTER_EMBOSS);
    imagefilter($image, IMG_FILTER_EDGEDETECT);
    imagefilter($image, IMG_FILTER_NEGATE);
    /* output captcha image to browser */
    header('Content-Type: image/jpeg');
    imagejpeg($image);
    imagedestroy($image);
} 
createCaptcha($width,$height,$characters); 
?>
3 голосов
/ 04 сентября 2010

Я бы порекомендовал еще одно место: phpclasses.org , на этом сайте вы можете найти все виды ресурсов PHP. Я должен был использовать капчу и нашел ее там. Я скачал его, но потерял ссылку жестко, извините: (

В любом случае, поиск класса капчи не займет больше 5 минут.

Попробуйте этот URL

С уважением, Дэвид!

1 голос
/ 04 сентября 2010

Microsoft ASIRRA , это просто изображения кошек и собак, и вам нужно выбрать всех кошек.

1 голос
/ 04 сентября 2010

Я не уверен, есть ли еще какие-то классы для этого, но вместо CAPTCHA, вы могли бы держать коллекцию вопросов против ботов, таких как "Огонь горячий или холодный?" и использовать их вместо изображений. Этот метод становится все более популярным в веб-приложениях.

Редактировать: вот так! http://textcaptcha.com/

1 голос
/ 04 сентября 2010

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

http://github.com/Xeoncross/micromvc/blob/v2.0.0/modules/core/classes/captcha.php

...