Создание Captcha-изображения средствами PHP

Статус
В этой теме нельзя размещать новые ответы.

Super_BOT

Мастер
Регистрация
21 Апр 2009
Сообщения
226
Реакции
31
Здраствуйте, необходимо реализовать алгоритм создания captcha-изображения средствами PHP, есть ли у кого готовое решение, или в какую сторону нужно смотреть при решении данной проблемы?

P.S. готовые решения без исходного кода предлагать не нужно, целью является написание алгоритма
 
Вот неплохая капча:
Еще в ZendFramework есть капча, к примеру.
 
Наверно самый простой вариант :)
PHP:
<?php
session_start(); 
$text = rand(10000,99999);
$_SESSION["vercode"] = $text;
$height = 25;
$width = 65;
$image_p = imagecreate($width, $height);
$black = imagecolorallocate($image_p, 0, 0, 0); 
$white = imagecolorallocate($image_p, 255, 255, 255);
$font_size = 14;  
imagestring($image_p, $font_size, 5, 5, $text, $white); 
imagejpeg($image_p, null, 80);
?>
 
еще вариант капчи,

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

 
Здраствуйте, необходимо реализовать алгоритм создания captcha-изображения средствами PHP
если собираетесь создавать сами, то могу посоветовать перед генерацией изображения создать небольшой массив, в котором цифры будут приравнены словам, примерно так:
PHP:
1=>'один',
2=>'два',
3=>'три',
4=>'четыре',
5=>'пять',
...
результат на картинке
 

Вложения

  • captcha.png
    captcha.png
    1,7 KB · Просмотры: 3
t3s: При такой реализации есть один нюанс не очень хороший: нерусскоязычные пользователи вряд ли смогут ввести капчу
 
ну да, получится дополнительная защита от китайских школьников, которые сидят на антикапче и антигейте...

а для англоязычного ресурса никто не мешает использовать в массиве английские числа
 
еще вариант
PHP:
<?php


$code='1234';

$im = imagecreate (80, 20);
$bg = imagecolorallocate ($im, 232, 238, 247);

for($i=0; $i<=128; $i++){
    $color = imagecolorallocate ($im, rand(0,255), rand(0,255), rand(0,255));
    imagesetpixel($im, rand(2,80), rand(2,20), $color);
}

for ($i = 0; $i < strlen($code); $i++) {
    $color = imagecolorallocate ($im, rand(0,200), rand(0,100), rand(0,200));
    $x = 5 + $i * 20;
    $y = rand(1, 6);
    imagechar($im, 5, $x, $y, $code[$i], $color);
}

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

header("Content-type: image/jpeg");
imagejpeg($im);
imagedestroy ($im);    

?>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху