Form con codice di verifica in PHP

Infine l’immagine in memoria viene trasformata in un file di tipo PNG e inviata nello stream di dati HTTP grazie alla funzione ImagePNG(). Per che preferisce un’immagine di tipo Jpeg esiste la funzione equivalente ImageJPG().
A questo punto lo script elimina l’immagine in memoria e termina.
E’ importante notare come non debbano esserci linee vuote all’inizio o alla fine del file (fuori dal tag <?php ….. ?>), infatti lo stream di dati HTTP dovrà contenere solo i dati binari dell’immagine generati da ImagePNG().
Una volta realizzato lo script che produce l’immagine, non ci resta che utilizzarlo.
In primo luogo dobbiamo modificare la form di inserimento in modo che visualizzi l’immagine del codice di verifica, e abbia un campo in più dove l’utente dovrà copiarlo.
Vediamo ad esempio il file form.php:


<html><head></head><body>
<form action="processform.php" method="post">
<p>Nome:
<input name="Nome" type="text">
<br>
Codice di verifica: <img src="verimage.php" width="128" height="32" ><br>
Inserire il codice di verifica:<br>
<input name="VerCode" type="text" size="10" maxlength="10">
</p>
<p>
<input type="submit" name="Submit" value="Submit">
</p>
</form>
</body></html>

Da notare innanzitutto come abbiamo utilizzato verimage.php come se fosse una normale immagine:

Codice di verifica: <img src="verimage.php" width="128" height="32" >

In questo modo all’utente verrà mostrata l’immagine creata “al volo” da verimage.php, che provvederà anche a memorizzare il codice di verifica nella sessione. Per finire il nostro esempio ecco il file processform.php dove vengono processati i dati inseriti nella form:

<?php
/* Recupera la sessione */
session_start();

/* Recupera il codice di controllo digitato dall'utente */
$vercode=strtolower(stripslashes($_POST['VerCode']));

/* Confronta il codice immesso dall’utente
con quello memorizzato in sessione
Verifichiamo anche che l’utente abbia digitato qualcosa.
*/
if (strlen($vercode)>1 && $vercode == $_SESSION['verification_string']) {
print “Codice valido”;
}
else{
print “NO!”;
}
?>

Il punto chiave è evidentemente nella condizone if, che verifica che il codice inserito dall’utente sia uguale a quello presente nella sessione. Dato che l’utente non ha alcun strumento per accedere alla sessione, non vi è modo di indovinare il codice se non leggendolo dall’immagine.

Pagine: 1 2 3 4

7 Commenti a “Form con codice di verifica in PHP”

  1. elios scrive:

    Ciao,
    ho apprezzato molto il tuo tutorial, e vorrei inserirlo all’interno di un GuestBook, per evitare di scrivere messaggi di spam…

    Ho studiato molto bene le tue pagine, e credo anche di aver capito come funziona il sistema, tranne un po’ per la pagina verimage.php, che mi prometto di apprendere col tempo…

    Ma veniamo al problema….

    Tu effettui il controllo della validità del codice, nella pagina processform.php; io avrei bisogno di effettuare questo controllo in javascript, e senza richiamare un’altra pagina, ma svolgendo tutto nella pagina di scrittura dei messaggi (si tratta di un guestbook….)

    E’ possibile controllare l’effettiva corrispondenza tramite javascript?

    Grazie…
    ti lascio la mia mail: eliomarotta@alice.it

  2. admin scrive:

    Elio,

    Non credo sia possibile farlo in maniera diretta perché dovresti mettere il codice di sicurezza nel sorgente Javascript che quindi diventerebbe “visibile”.
    Semmai potresti utilizzare qualcosa tipo Ajax per controllare dinamicamente il codice senza però esporlo. Non è una cosa semplicissima da fare, ma si può fare.

  3. tranquillity scrive:

    Ciao. Veramente un tutorial utile, e funziona bene per le mie necessità. Appena ho finito di implementarlo sul sito che gestisco, ti posto il link così puoi guardarci. Grande!

  4. Ciao devo ammettere che lo script è eccezionale… e spero di utilizzarlo all’interno del mio libro degli ospiti che ogni giorno mi tocca cancellare i messaggi spam… purtroppo ho riscontrato un piccolo problema, praticamente non si carica l’immagine col codice OCR… mi aiuti? Grazie ;o)

  5. Lazzo85 scrive:

    Ciao,

    lo script è proprio quello che stavo cercando!
    Purtroppo anch’io come etikettaindipendente non riesco a caricare l’immagine col codice OCR.
    Potresti dare delucidazioni in merito.
    Grazie

  6. Meg scrive:

    abbiamo fatto qualche indagine ed è venuto fuori che, almeno nel caso di etikettaindipendente, il problema sembra essere la mancanza delle librerie grafiche GD nell’installazione del php.
    Quindi provate a usare phpinfo() per verificare che il supporto alle librerie grafiche GD sia abilitato e funzionante!

  7. Si si Meg, hai proprio ragione, è proprio la mancanza delle librerie grafiche GD nell’installazione del php… ma ti comunico che presto risolverò il problema perché ho cambiato azienda e qui ci sono 2 programmatori…. presto vi farò sapere, buon lavoro a tutti ;-)

Lascia un Commento

Devi aver fatto il login per inviare un commento