Agian ez da sistema honena izango , ezta sinpleena erabiltzailearentzako, baina neurri handi batean spamaren arazoa ekiditeko balio du. Ala ere gogoratu kode honek ez dituela irisgarritasun beharrak betetzen.

$izen="";
$hitzGakoa="";
//aldagai nagusia
$nagusiW = 150 ;
$nagusiH = 60 ;
$zenbatLetraHitza = 5 ;
$zenbatLetra = 10 ;
$letraAngelua = 20 ;
//fondoko kolorea
$R = 255 ;
$G = 255 ;
$B = 255 ;
//irudi nagusia sortzen dugu
$ImgNagusi = imagecreatetruecolor($nagusiW, $nagusiH);
//irudi nagusiarentzet koloreak
$kolorea = imagecolorallocate($ImgNagusi, $R, $G, $B);
//irudi nagusiari fondoko kolorea ezartzen diogu
imagefill($ImgNagusi, 0, 0, $kolorea);
for($i=0; $i< ($zenbatLetra+$zenbatLetraHitza) ; $i++){
$mota=rand(0, 2);
switch($mota){
case 0:
$izen = rand(0, 9);
break;
case 1:
$izen = chr(rand(65, 90));
break;
case 2:
$izen = chr(rand(97, 122));
break;
}
//bakarrik hitz gakoak gordetzen dira
if($i >= $zenbatLetra){
$alpha = 100;
$hitzGakoa .= $izen;
//letraren kokapena zehazten dugu zabaleran
$letraZabaleran = ($nagusiW / $zenbatLetraHitza) * ($i - $zenbatLetra);
$letraZabaleranB = (($nagusiW / $zenbatLetraHitza) * (($i - $zenbatLetra) + 1)) - 10;
//letraren kokapena zehazten dugu altueran
$letraAltueran = 0;
$letraAltueran = $nagusiH - 15;
}else{
$alpha = 15;
//letraren kokapena zehazten dugu zabaleran
$letraZabaleran = rand( 0, $nagusiW );
$letraZabaleranB = rand( 0, $nagusiH );
//letraren kokapena zehazten dugu altueran
$letraAltueran = 0;
$letraAltueran = $nagusiH - 15;
}
//letraren irudia sortzen dugu
$img = imagecreatetruecolor(20, 20); //letraren irudia sortzen dugu
//koloreak zehazten ditugu
$kolore_trans = imagecolorallocate($img, $R, $G, $B);
$koloreaRand = imagecolorallocate($img, rand(0,150), rand(0,150), rand(0,150));
//irudi txikiaren fondoa margotzen dugu
imagefill($img, 0, 0, $kolore_trans);
//letra margotzen dugu
$testua = ImageString($img, rand(5, 15), 1, 0, $izen, $koloreaRand);
//angulua zehazten dugu
$angulua = rand(-($letraAngelua), $letraAngelua);
$img = imagerotate($img, $angulua, $kolore_trans);
//irudiaren fondoa transparente biurtzen dugu
imagecolortransparent($img, $kolore_trans);
//irudiaren baloreak lortzen ditugu
$kopX = rand($letraZabaleran, $letraZabaleranB);
$kopY = rand(5, 45);
$imgX = 0;
$imgY = 0;
$imgW = ImageSX($img);
$imgH = ImageSY($img);
//letra irudi nagusian jartzen dugu
imagecopymerge ($ImgNagusi, $img, $kopX, $kopY, 0, 0, $imgW, $imgH, $alpha);
}
header("Content-type: image/jpeg");
imagejpeg($ImgNagusi);
imagedestroy($ImgNagusi);
session_start();
$_SESSION['ses_izena'] = $hitzGakoa;
$hitzGakoa="";
//aldagai nagusia
$nagusiW = 150 ;
$nagusiH = 60 ;
$zenbatLetraHitza = 5 ;
$zenbatLetra = 10 ;
$letraAngelua = 20 ;
//fondoko kolorea
$R = 255 ;
$G = 255 ;
$B = 255 ;
//irudi nagusia sortzen dugu
$ImgNagusi = imagecreatetruecolor($nagusiW, $nagusiH);
//irudi nagusiarentzet koloreak
$kolorea = imagecolorallocate($ImgNagusi, $R, $G, $B);
//irudi nagusiari fondoko kolorea ezartzen diogu
imagefill($ImgNagusi, 0, 0, $kolorea);
for($i=0; $i< ($zenbatLetra+$zenbatLetraHitza) ; $i++){
$mota=rand(0, 2);
switch($mota){
case 0:
$izen = rand(0, 9);
break;
case 1:
$izen = chr(rand(65, 90));
break;
case 2:
$izen = chr(rand(97, 122));
break;
}
//bakarrik hitz gakoak gordetzen dira
if($i >= $zenbatLetra){
$alpha = 100;
$hitzGakoa .= $izen;
//letraren kokapena zehazten dugu zabaleran
$letraZabaleran = ($nagusiW / $zenbatLetraHitza) * ($i - $zenbatLetra);
$letraZabaleranB = (($nagusiW / $zenbatLetraHitza) * (($i - $zenbatLetra) + 1)) - 10;
//letraren kokapena zehazten dugu altueran
$letraAltueran = 0;
$letraAltueran = $nagusiH - 15;
}else{
$alpha = 15;
//letraren kokapena zehazten dugu zabaleran
$letraZabaleran = rand( 0, $nagusiW );
$letraZabaleranB = rand( 0, $nagusiH );
//letraren kokapena zehazten dugu altueran
$letraAltueran = 0;
$letraAltueran = $nagusiH - 15;
}
//letraren irudia sortzen dugu
$img = imagecreatetruecolor(20, 20); //letraren irudia sortzen dugu
//koloreak zehazten ditugu
$kolore_trans = imagecolorallocate($img, $R, $G, $B);
$koloreaRand = imagecolorallocate($img, rand(0,150), rand(0,150), rand(0,150));
//irudi txikiaren fondoa margotzen dugu
imagefill($img, 0, 0, $kolore_trans);
//letra margotzen dugu
$testua = ImageString($img, rand(5, 15), 1, 0, $izen, $koloreaRand);
//angulua zehazten dugu
$angulua = rand(-($letraAngelua), $letraAngelua);
$img = imagerotate($img, $angulua, $kolore_trans);
//irudiaren fondoa transparente biurtzen dugu
imagecolortransparent($img, $kolore_trans);
//irudiaren baloreak lortzen ditugu
$kopX = rand($letraZabaleran, $letraZabaleranB);
$kopY = rand(5, 45);
$imgX = 0;
$imgY = 0;
$imgW = ImageSX($img);
$imgH = ImageSY($img);
//letra irudi nagusian jartzen dugu
imagecopymerge ($ImgNagusi, $img, $kopX, $kopY, 0, 0, $imgW, $imgH, $alpha);
}
header("Content-type: image/jpeg");
imagejpeg($ImgNagusi);
imagedestroy($ImgNagusi);
session_start();
$_SESSION['ses_izena'] = $hitzGakoa;
Beste captcha batzuk PHPen:
http://www.puremango.co.uk/cm_php_captcha_script_113.php
http://phpbtree.com/captcha/index.php
PHPen idatzitako OCR saiarekera:
http://captcha.megaleecher.net/
0 Responses
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.