Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Consiglio (e dubbio) su implementazione Captcha e validazione form

    Ciao a tutti.

    Sto cercando di implementare la gestione del captcha in un form dinamico in js che utilizzo di solito (UniForm ).

    Permette la validazione dei campi tramite js.

    Vorrei implementare un semplicissimo captcha, questa e' il file captcha.php

    Codice PHP:

    <?php
     
        session_start
    ();
     
        
    /*VALORE CASUALE 5 CARATTERI*/
        
    $stringa md5(microtime());
        
    $risultato substr($stringa05);
     
        
    $img imagecreatefrompng("bg_cap.png");
     
        
    $testo imagecolorallocate($img255255255);
     
        
    imagestring($img4500$risultato$testo);
     
        
    $_SESSION['CODICE'] = $risultato;
     
        
    header("Content-type: image/png");
     
        
    imagepng($img);

    ?>
    e lo richiamo nel form cosi':

    codice:
    [img]captcha.php[/img]\n";

    Per poterlo validare al volo il js di convalida del form mi permette di scegliere il tipo di validazione in base al campo, per questo avevo pensato a questa soluzione:
    recupero insieme all'immagine anche il codice in formato testo e lo metto in un campo hidden, poi le faccio eseguire la validazione al volo.

    Qui sorgono i problemi...
    Non riesco assolutamente a recuperare il valore in formato testuale per poter riempire il campo hidden nella pagina del form.

    Qualcuno ha suggerimenti su come poter fare ?



    Grazie a tutti e buona domenica

  2. #2
    Codice PHP:

    <?php
     
    session_start
    ();
     function 
    captcha()
    {
        
    /*VALORE CASUALE 5 CARATTERI*/
        
    $stringa md5(microtime());
        
    $risultato substr($stringa05);
     
        
    $img imagecreatefrompng("bg_cap.png");
     
        
    $testo imagecolorallocate($img255255255);
     
        
    imagestring($img4500$risultato$testo);
     
        
    $_SESSION['CODICE'] = $risultato;
       
       if(isset(
    $_GET["img"]))
       {
     
        
    header("Content-type: image/png");
     
        
    imagepng($img);
        }
        elseif(isset(
    $_GET["txt"]))
        {
         return 
    $risultato;
        }
    }
    captcha();
    ?>
    poi li richiami con:
    immagine: src="captcha.php?img"
    hidden field: value="captcha.php?txt"


    prova a giocare su una cosa del genere (potrei aver sbagliato qualcosa di sintassi, ma l'idea c'è...)

  3. #3
    oppure (meglio) ti crei una funzione che restituisce il codice in testo, un'altra che crea il capatcha da codice creato, il primo codice lo metti in una variabile di pagina e lo passi sia all'hidden che come argomento alla funzione dentro l'src dell img

  4. #4
    Codice PHP:

    <?php
     
    function crea_codice()
        
    session_start();
     
        
    /*VALORE CASUALE 5 CARATTERI*/
        
    $stringa md5(microtime());
        
    $risultato substr($stringa05);
     return 
    $risultato;
    }

    function 
    crea_captcha($risultato)
    {
        
    $img imagecreatefrompng("bg_cap.png");
     
        
    $testo imagecolorallocate($img255255255);
     
        
    imagestring($img4500$risultato$testo);
     
        
    $_SESSION['CODICE'] = $risultato;
     
        
    header("Content-type: image/png");
     
        
    imagepng($img);
    }

    if(isset(
    $_GET['txt']))
    {
       
    crea_codice();
    }
    elseif(isset(
    $_GET['img']))
    {
      
    crea_capatcha($_GET['code']);
    }
    ?>
    poi li implementi con
    include('captcha.php');
    $code = crea_codice();

    ...

    <input type="hidden" value="<?=$code?>".../>
    [img]captcha.php?img&amp;code=<?=$code?>[/img]


    questo dovrebbe funzionare

  5. #5
    Originariamente inviato da Master Darel
    Codice PHP:

    <?php
     
    session_start
    ();
     function 
    captcha()
    {
        
    /*VALORE CASUALE 5 CARATTERI*/
        
    $stringa md5(microtime());
        
    $risultato substr($stringa05);
     
        
    $img imagecreatefrompng("bg_cap.png");
     
        
    $testo imagecolorallocate($img255255255);
     
        
    imagestring($img4500$risultato$testo);
     
        
    $_SESSION['CODICE'] = $risultato;
       
       if(isset(
    $_GET["img"]))
       {
     
        
    header("Content-type: image/png");
     
        
    imagepng($img);
        }
        elseif(isset(
    $_GET["txt"]))
        {
         return 
    $risultato;
        }
    }
    captcha();
    ?>
    poi li richiami con:
    immagine: src="captcha.php?img"
    hidden field: value="captcha.php?txt"


    prova a giocare su una cosa del genere (potrei aver sbagliato qualcosa di sintassi, ma l'idea c'è...)

    Questa potrebbe essere una soluzione, pero' non mi da nessun risultato, se metto:

    codice:
    <input type="hidden" name="cap" value="captcha.php?txt" />
    Mi restituisce esattamente:

    codice:
    <input type="hidden" name="cap" value="captcha.php?txt" />

    E non mi visualizza piu' l'immagine (mi era sfuggito..)



    Forse e' sbagliata la sintassi.

    La seconda soluzione, forse l'avevo gia' provata io ma molto probabilmente l'avevo cannata.
    Inizo a essere un po' confuso...

    Grazie !!

  6. #6
    up...

  7. #7
    sicuramente la prima che ti ho mandato non può funzionare, per la seconda, prova a smanettarci un po'...
    una domanda, ma il form dove usi il captcha, è in html puro o in php che genera html?

  8. #8
    Peccato...Mi piaceva come sistema, ma era troppo semplice.....
    Il form e' in html generato da php.


    Allora provo la seconda soluzione e ti faccio sapere.

    Forse avevo avuto problemi a suddividere cosi' le due funzioni, perche' essendo il captcha generato tramite microtime, se passa anche solo un decimo di seconda tra una funzione e l'altra i due codici non saranno mai uguali (forse sto dicendo una belinata....).

    Cmq, riprovo, grazie per il suggerimento.

  9. #9
    Allora, forse e' la strada giusta.

    Ho creato un file codice.php dove metto la funzione per generare il codice:

    Codice PHP:

    <?php
        
         
    function captchaTxt() {
     
                
    /*VALORE CASUALE 5 CARATTERI*/
                
    $stringaTxt md5(microtime());
                
    $risultatoTxt substr($stringaTxt05);
                           
                
    $_SESSION['CODICETXT'] = $risultatoTxt;
        
          }
            
            
    captchaTxt();
        
    ?>
    La richiamo nel file del form cosi' (giusto per vedere se genera il codice):

    codice:
    require("codice.php");
    Correttamente genera un codice di 5 caratteri che mi viene stampato senza errori.

    Poi la funzione per generare l'immagine, captcha.php:

    Codice PHP:

    <?php

         
    function captchaImg() {
     
            
    /*VALORE CASUALE 5 CARATTERI*/
            // LI COMMENTO PERCHE' USERO' IL CODICE GENERATO DA codice.php E SALVATO IN UNA VAR DI SESSIONE
            //$stringa = md5(microtime());
            //$risultato = substr($stringa, 0, 5);
            
            
    $img imagecreatefrompng("texture.png");
            
            
    $testo imagecolorallocate($img255255255);
            
            
    imagestring($img4500$_SESSION['CODICETXT'], $testo);
            
            
    $_SESSION['CODICE'] = $_SESSION['CODICETXT'];
            
            
    header("Content-type: image/png");
            
            
    imagepng($img);
        
          }
            
            
    captchaImg();
        
    ?>
    E lo richiamo con il precedente:

    codice:
    echo "<img src=\"captcha.php\" title=\"\" alt=\"\" />\n";

    Ma purtroppo non funziona, nella pagina del form mi genera il codice "testuale" ma non mi genera l'immagine.


  10. #10
    nella pagina che genera l'immmagine, prova a tirare fuori l'header e metterlo prima della dichiarazione della funzione... altro non mi viene in mente nulla...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.