L'ho preso in giro per internet, da qualcuno che lo distribuiva gratis...non me ne voglia!
Codice PHP:
/* Alcuni parametri configurabili */
$boxW=128; // Larghezza immagine
$boxH=32; // Altezza immagine
$codelen=6; // Lunghezza del codice
$snow=4; // effetto neve 0=no, o intero % copertura
/* Dichiara che lo stream trasmesso è un file immagine PNG */
header("Content-Type: image/png");
/* Inizializza la sessione */
session_start();
/* inizializza il generatore di numeri casuali */
srand((double)microtime()*1000000);
/* Crea un codice di verifica casuale
e lo immagazzina nella sessione in
modo che processform.php possa recuperarlo
*/
$string=strtolower(substr(md5(rand()),7,$codelen));
$_SESSION['verification_string']=$string;
/* Creazione immagine di dimesioni $boxW x $boxH */
$im = ImageCreate($boxW, $boxH);
/* Colori */
$white = ImageColorAllocate($im, 255, 255, 255);
$black = ImageColorAllocate($im, 0, 0, 0);
/* Riempie lo sfondo di nero */
ImageFill($im, 0, 0, $black);
/* creo la neve */
if($snow>0) {
$n=($boxW*$boxH)*($snow/100);
for($i=0;$i< $n;$i++) {
$x=rand(1,$boxW-1);
$y=rand(1,$boxH-1);
imagesetpixel($im, $x,$y, $white);
}
}
/* seleziona un font a caso tra quelli di sistema */
$font=rand(3,5);
/* Calcola ampiezza scritta */
$w=strlen($string)*ImageFontWidth($font);
$h=ImageFontHeight($font);
/* Posizione casuale */
$x=rand(1,($boxW-$w-1));
$y=rand(1,($boxH-$h-1));
/* scrive nell'immagine la stringa di controllo */
ImageString($im, $font, $x, $y, $string, $white);
/* output al browser*/
ImagePNG($im);
/* Distruggo l'immagine in memoria */
ImageDestroy($im);