Капча

Тема в разделе "Базовые решения", создана пользователем vital, 24 мар 2010.

  1. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    Вам тоже не нравится эта мудреная ReCaptcha, но защита нужна? Выкладываю хороший модуль. Стырил где-то в нете, да простит меня автор, но не помню где.
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">captcha.php</div></div><div class="sp-body"><div class="sp-content">
    Код (PHP):
    <?php

    session_start();


    $width = 100;
    $height = 40;
    $font_size = 12;
    $let_amount = 5;
    $back_let_amount = 30;
    $path_fonts = 'fonts/';

    $letters = array(
    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'm',
    'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
    'z', '2', '3', '4', '5', '6', '7', '9'
    );

    $colors = array('10', '30', '50', '70', '90', '110',
    '130', '150', '170', '190', '210'
    );


    $im = imagecreatetruecolor($width, $height);
    $back = imagecolorallocate($im, 255, 255, 255);
    imagefill($im, 0, 0, $back);


    $fonts = array();
    $dir = opendir($path_fonts);

    while($font_name = readdir($dir))
    {
    if($font_name !='.' && $font_name != '..')
    $fonts[] = $font_name;
    }

    closedir($dir);


    for($i = 0; $i < $back_let_amount; $i++)
    {
    $color = imagecolorallocatealpha($im, rand(0, 255), rand(0, 255), rand(0, 255), 100);

    $font = $path_fonts . $fonts[rand(0, sizeof($fonts) - 1)];
    $letter = $letters[rand(0, sizeof($letters) - 1)];
    $size = rand($font_size - 2, $font_size + 2);

    imagettftext($im, $size, rand(0, 45), rand($width * 0.1, $width - $width * 0.1),
    rand($height * 0.2 , $height), $color, $font, $letter);
    }

    for($i = 0; $i < $let_amount; $i++)
    {
    $color = imagecolorallocatealpha($im, $colors[rand(0, sizeof($colors) - 1)],
    $colors[rand(0, sizeof($colors) - 1)],
    $colors[rand(0, sizeof($colors) - 1)], rand(20, 40));

    $font = $path_fonts . $fonts[rand(0, sizeof($fonts) - 1)];
    $letter = $letters[rand(0, sizeof($letters) - 1)];
    $size = rand($font_size * 2.1 - 2, $font_size * 2.1 + 2);
    $x = ($i + 1) * $font_size + rand(4, 7);
    $y = (($height * 2) / 3) + rand(0, 5);
    $code[] = $letter;

    imagettftext($im, $size, rand(0, 15), $x, $y, $color, $font, $letter);
    }


    $_SESSION['captcha'] = implode('', $code);

    header('Content-type: image/gif');
    imagegif($im);
    imagedestroy($im);


    ?>
    Думаю там все очевидно.. Используется так.
    создайте папку fonts для шрифтов, киньте туда любые biggrin.gif
    при подключении не забудьте запустить сессию, и прописать условие типа
    Код (PHP):
    if($_SESSION['captcha'] !== strtolower($_POST['captcha']))
    {
    print 'код неверный';
    }
     
Загрузка...
Похожие Темы - Капча
  1. prosto4ok
    Ответов:
    1
    Просмотров:
    3.009

Поделиться этой страницей