• User Attivo

    Problema con codice captcha

    Ho una pagina php che mi genere l'immagine jpg (o almeno così dovrebbe essere) del codice captcha.

    Il problema è che facendo l'IMG SCR del file php mi viene visualizzata un immagine BMP. Qualcuno potrebbe aiutarmi a capire dove sta il problema.

    Questo è il codice della pagine PHP
    [PHP]
    <?php
    header("Content-type: image/jpg");
    function sfondi()
    {
    $dir = opendir("sfondi/");
    $counter =0;
    while (($file = readdir($dir)) == true ) {
    if ($counter == 1) { $counter = ''; } else {
    if ($file !== '.' AND $file !== '..') {
    $sfondi[] = "sfondi/$file";
    $counter = $counter+1;
    }
    }
    }
    $elemarray=$counter-1;
    $sfondo = $sfondi[mt_rand(0,$elemarray)];
    return $sfondo;
    }

    $immagine = imagecreatefromjpeg(sfondi());
    $nero = imagecolorallocate($immagine, 0, 0, 0);
    $colore = array("$nero");
    function cerca_carattere()
    {
    $carattere = mt_rand(49,122);
    $charesclusi = array(58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,108,111);
    if (in_array($carattere,$charesclusi))
    {
    return cerca_carattere();
    }
    else
    {
    return $carattere;
    }
    }

    function fonts()
    {
    $dir = opendir("fonts/");
    $counter = 0;
    while (($file = readdir($dir)) == true )
    {
    if ($file !== '.' AND $file !== '..')
    {
    $font[] = "fonts/$file";
    $counter = $counter+1;
    }
    }
    $elemarray=$counter-1;
    $fonts = $font[mt_rand(0,$elemarray)];
    return $fonts;
    }

    $x = 11;
    $y= 20;
    for ($c=0; $c<=3; $c++)
    {
    $char = chr(cerca_carattere());
    imagettftext($immagine, mt_rand(25,35), mt_rand(28,-28), rand($x,$y), 40, $colore[0], fonts(), $char);
    $x=($y+27);
    $y=($x+13);
    $caratteri[] = $char;
    }
    imagejpeg($immagine, NULL, 90);
    imagedestroy($immagine);
    session_start();
    $codice = $caratteri[0].$caratteri[1].$caratteri[2].$caratteri[3];
    $_SESSION['codice'] = $codice;
    ?>

    [/PHP]

    Grazie


  • ModSenior

    Ciao DARKF3D3,

    non ho ben capito qual'è il problema. Potresti speigare meglio cosa intendi per viene visualizzata un immagine BMP?


  • User Attivo

    In pratica con quel codice, creo l'immagine del codice captcha, poi nel file html la visualizzo utilizzando l'IMG SCR.

    Il fatto è che secondo, me stando al codice, l'immagine dovrebbe essere una jpg, però guardando le proprietà del immagine è una bitmap.

    A me serve una jpg, però non riesco, viene creata sempre una bitmap.


  • ModSenior

    Le funzioni che hai utlizzato generano un immagine jpg, la cosa mi sembra strana.


  • User Attivo

    Lo so anche a me sembra strano, però non è un problema con easyphp o altro, infatti anche sul sito della guida che ho usato per creare il captcha, se si prova a salvare l'immagine è una bitmap e il codice è lo stesso.

    Qui puoi vedere l'esempio della guida:

    http: //zevues.altervista.org/captcha/captcha.html