Originariamente inviato da Braco
Questo è il mio da quando l'ho messo fine dello spam, come vedi ha una $SESSION che mantiene lo stesso codice in caso di errato invio:

Codice PHP:
<?php

//Captca-image 

session_start(); 

if (empty(
$_SESSION['rand_code'])){ 
$str ""
$length 0
$caratteri "abcdefghijkmnprstuvwxyz123456789";  /* Caratteri che appaiono come immagine */
for ($i 0$i 4$i++){          /* il 4 indica il numero di caratteri-immagine che appaiono */
$str .= $caratteri{rand(0,32)};

$_SESSION['rand_code'] = $str

$imgX 60;//Sposta a dx i caratteri-immagine 
$imgY 18;//Sposta in alto i caratteri-immagine 
$image imagecreatetruecolor(6020); 
$backgr_col imagecolorallocate($image238,239,239);//Colore di sfondo
$border_col imagecolorallocate($image208,208,20);//Colore del bordo 
$text_col imagecolorallocate($image46,60,31);//Colore dei caratteri-immagine
 
imagefilledrectangle($image006020$backgr_col);//Cambiando i 4 valori appare un'ombra nera e si può creare un'effetto rilievo o incassato del rettangolo  
imagerectangle($image005919$border_col);// Sposta il bordino colorato del rettangolo

$font "courbi.ttf";
$font_size 14;//Dimensione dei caratteri-immagine 
$angle 0;//Ruota obliqui i caratteri-immagine 
$box imagettfbbox($font_size,$angle,$font,$_SESSION['rand_code']); 
$x = (int)($imgX $box[4]) / 2;//Sposta a sx i caratteri-immagine 
$y = (int)($imgY $box[5]) / 2;//Sposta in alto i caratteri-immagine
imagettftext($image,$font_size,$angle,$x,$y,$text_col,$font,$_SESSION['rand_code']); 

header("Content-type: image/jpeg"); 
imagejpeg($image); 
imagedestroy ($image);
 
//Fine Captca-image 

?>
Si anche io ne metto uno e dopo 10-20 giorni siamo punto e daccapo perche gli spammer riescono ad inviare il modulo lo stesso.
Avevo pensato che riescono a vedere il method del form e quindi leggere che la pagina dopo l'invio del modulo era per esempio chiamata invia.php e quindi avevo pensato di nascondere il nome della pagina successiva ma senza idee per farlo.
Ad ogni modo puoi postare sia il codice del form che quello della pagina successiva?
Almeno vedo di aggiungerlo al mio per vedere se riesco
Grazie
Ciao