Skip to content


Captcha, spama ekiditeko

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.

Captcha

 $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;

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/

Posted in Php.

0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

Some HTML is OK

(required)

(required, but never shared)

or, reply to this post via trackback.