Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2015
    Messaggi
    81

    Problema con la realizzazione captcha

    Ciao forum, ho un problema con questo codice che crea un immaggine captcha ma quando confronto $_SESSION['control'] con quello inserito nel form dice sempre che è sbagliato.
    Ho anche notato una cosa quando faccio echo $_SESSION['control'] e aggiorno fa vedere il captcha che si era visualizzato prima
    Codice PHP:
    <?php

    $x 
    200;
    $y 75;

    $crypt sha1(microtime() * time());


    $str substr($crypt,0,6);

    $code $str;
    $space $x / (strlen($code)+1);
    $img imagecreatetruecolor($x,$y);
    $bg imagecolorallocate($img,255,255,255);
    $border imagecolorallocate($img,0,0,0);
    $colors[] = imagecolorallocate($img,128,64,192);
    $colors[] = imagecolorallocate($img,192,64,128);
    $colors[] = imagecolorallocate($img,108,192,64);
    imagefilledrectangle($img,1,1,$x-2,$y-2,$bg);
    imagerectangle($img,0,0,$x-1,$y-2,$border);
    for (
    $i=0$istrlen ($code); $i++)
    {
    $color $colors[$i count($colors)];
    imagettftext($img,28+rand(0,8),-20+rand(0,40),($i+0.3)*$space,50+rand(0,10),$color,'BRLNSR.TTF',$code{$i});
    }
    for(
    $i=0;$i<400;$i++)
    {
    $x1 rand(3,$x-3);
    $y1 rand(3,$y-3);
    $x2 $x1-2-rand(0,8);
    $y2 $y1-2-rand(0,8);
    imageline($img,$x1,$y1,$x2,$y2,$colors[rand(0,count($colors)-1)]);
    }
    $_SESSION['control'] = sha1($str);
     
    header("Content-type: image/png");
    imagepng($img);

    ?>

  2. #2
    Consiglio vivamente di usare reCaptcha, considerando che ogni altro sistema "artigianale" è praticamente inutile, te lo dico per esperienza personale.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    superando per un momento il contenuto del post precedente che non suggerisce soluzioni al tuo problema,

    lo script che hai postato, funziona correttamente
    Cattura.PNG
    quindi si può solo ipotizzare che lo esegui in un altro script, con una sequenza non idonea
    (verifica anche di applicare la crittografia sulla risposta, come viene applicata alla generazione)
    Codice PHP:
    $_SESSION['control'] = sha1($str); 

    quando hai risolto il problema, valuta il post precedente
    Ultima modifica di marino51; 22-06-2015 a 10:16

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2015
    Messaggi
    81
    grazie per le risposte, molto probabilmente seguirò il consiglio di mettere recaptcha però mi piacerebbe risolvere anche questo problemino
    Codice PHP:
            protected function VerifyCaptcha()
            {
                if(
    sha1($_POST['captcha']) != $_SESSION['control'])
                {
                    return 
    FALSE;
                }
                else
                {
                    return 
    TRUE;
                }
            } 
    recupero i dati dal form e poi li confronto con quelli della sessione quando clicco sul pulsante del form, pero sono sempre sbagliati quindi torna sempre un esito negativo. lo so di averlo già detto ma vorrei fare notare una cosa strana quando faccio echo ('$_SESSION['control']') come risultato mi esce un captcha precedente da quello visualizzato dal form

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    cambiare il metodo per generare il codice casuale, non credo risolva il problema che stai incontrando, perché significa sostituire il codice con cui hai aperto la discussione, ma non intervenire sulla sequenza del codice principale

    la funzione "VerifyCaptcha" non sembra avere problemi,
    se non lo hai già fatto (ma forse si),
    apri la funzione con il var_dump dei due valori "$_POST['captcha']" e "$_SESSION['control']"

    da quel che leggo nei tuoi post mi sembra che sia la sequenza delle chiamate alle funzioni nel "main" non corretta
    Ultima modifica di marino51; 22-06-2015 a 21:43

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2015
    Messaggi
    81
    Scusa l' ignoranza ma dove e come devo inserirlo?

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    Quote Originariamente inviata da XuRi Visualizza il messaggio
    Scusa l' ignoranza ma dove e come devo inserirlo?
    Codice PHP:
    imageline($img,$x1,$y1,$x2,$y2,$colors[rand(0,count($colors)-1)]);
    }
    $_SESSION['control'] = sha1($str);
                
    var_dump($_SESSION['control']); echo "<br />";
    header("Content-type: image/png");
    imagepng($img); 
    Codice PHP:
            protected function VerifyCaptcha()
            {
                
    var_dump($_POST['captcha']);    echo "<br />";
                
    var_dump($_SESSION['control']); echo "<br />";
                if(
    sha1($_POST['captcha']) != $_SESSION['control'])
                {
                    return 
    FALSE;
                }
                else
                {
                    return 
    TRUE;
                }
            } 
    Ultima modifica di marino51; 23-06-2015 a 00:27

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2015
    Messaggi
    81
    Grazie funziona, togliendo gli echo che hai messo e togliendo var dumb dal primo codice. Anche se non ho capito il perchè funziona. var_dump se non sbaglio serve a dare informazione su un certa variabile perchè dovrebbe farlo funzionare

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    il mio suggerimento aveva lo scopo di verificare il contenuto delle variabili, mentre non produceva nessun effetto sul funzionamento del codice,
    probabilmente hai modificato altro, per esempio la sequenza del "main" dove le funzioni erano chiamate e dove poteva risiedere il problema
    in ogni caso bene che funzioni
    ciao

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Quote Originariamente inviata da fdisotto Visualizza il messaggio
    Consiglio vivamente di usare reCaptcha, considerando che ogni altro sistema "artigianale" è praticamente inutile, te lo dico per esperienza personale.
    Scusate se mi intrometto, è possibile usarle reCaptcha anche se il sito è in localhost?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.