Controllo form antispam. Come limitare gli inserimenti fraudolenti in un form.
ALLWEB free
Web Directory Script Linguaggi
Italiano Inglese Tutte
 
 17 Apr 2014
aggiungi in preferiti  
Home    Mappa directory    Script




Form antispamming con php:

Lo spamming o spam Ŕ un comportamento illegele che alcuni individui adottano su internet inviando (in automatico) email pubblicitarie o con collegamenti a siti di phishing (siti copia di grossi portali, ad esempio banche... solitamente viene fatto per rubare le password di accesso).

Un comportamento molto simile viene a volte adottato sui form che abbiamo nel nostro sito, pensate che la nostra directory riceveva 40/50 segnalazioni al giorno, pi¨ della metÓ incomprensibili, da cestinare.

Per eliminare le intrusioni automatiche nei nostri form Ŕ necessario inserire una variabile di controllo sempre diversa che possa regolamentare il flusso di informazioni.
In questo modo solo un navigatore, agendo manualmente, potrÓ compilare ed inviare il form.

Per fare questo dobbiamo creare una variabile numerica casuale, memorizzarla in un cookie o sessione, e verificare la corrispondenza di quella inserita nel form.

Vista la semplicitÓ non ci dilungheremo in altre spiegazioni ma passeremo subito allo script:


Prova Script:


PROVA:


Inserisci il codice per convalidare l'invio:
 870 
 


AZZERA


N.B.
Il link AZZERA lo dobbiamo inserire perchŔ la variabile con il codice Ŕ stata memorizzata nella sessione quando abbiamo attivato il form. Se non inseriamo un link diretto alla pagina (senza passare dal form) la variabile con il codice non varierÓ (in pratica dobbiamo annullare la variabile di controllo form).
Da adesso passeranno solo inserimenti MANUALI.


Codice:

<form action="articolo_php_form_antispam.php" method="post">
<table bgcolor="ffffcc" width="200" cellpadding="5" cellspacing="5">
<?
$attivazione=$_POST['attivazione'];
$testo=$_POST['testo'];
if(!$testo){$testo="..testo..";}
$code=$_POST['code'];
if($attivazione!=2){// creo e carico la variabile anti-spam nella sessione se sono appena entrato nella pagina (form non attivato)
$bast=rand(1,9999);//$bast Ŕ la variabile anti spam, un numero sasuale da 0 a 9999
$_SESSION['bast']=$bast;// da adesso fino a quando non riazzero il form la variabile Ŕ memorizzata
}
if($attivazione==2){// (in questo caso anche else)
if($code==$_SESSION['bast'] and $_SESSION['bast']!=""){// verifico l'esattezza
echo"<tr><td align=\"center\" colspan=\"2\">FORM SPEDITO CORRETTAMENTE<br></td></tr>";// qui posso fare tutto quello per cui il form Ŕ stato creato
}
else{// se la variabile non Ŕ uguale produco un errore a video
echo"<tr><td align=\"center\" colspan=\"2\">CODICE ERRATO - FORM <b>NON</b> SPEDITO</td></tr>";
}
}

// Form di segnalazione:
echo"<tr><td colspan=\"2\" align=\"center\">
<input type=\"hidden\" name=\"attivazione\" value=\"2\">
<input type=\"text\" name=\"testo\" size=\"10\" maxlength=\"10\" value=\"".$testo."\">
</td></tr><tr><td align=\"right\">
<table><tr><td style=\"background-image= url(d3.gif)\">
 <i>".$_SESSION['bast']."</i> // qui scrivo la variabile di sessione
</td></tr></table>
</td><td align=\"left\">
 <input type=\"text\" name=\"code\" size=\"4\" maxlength=\"4\" value=\"".$code."\">
</td></tr><tr><td colspan=\"2\" align=\"center\">
<input type=\"submit\" value=\" Prova \">";
?>
</td></tr></table>
</form>
?>