ciao
senza andare a prendere uno script già fatto (c'è ne sono tanti lo so
) volevo provare a creare da 0 un controllo antispam.
Ho un form, e prima di accettare i dati, voglio fare un controllo;
il controllo lo faccio con una immagine con all'interno una sequenza di lettere e numeri random (che poi registro in sessione) che verifico nel form. il concetto in se è semplice, ma è giusto?
ora vi posto i due pezzetti di codici semplici semplici, vorrei avere dei vostri pareri se:
-il concetto è appunto esatto?
-nell generare l'immagine e salvare il codice del controllo sbaglio qualcosa?
-c'è qualche sistema migliore? se si, me lo consigliate?
-qualsiasi critica, suggerimento è ben accetto
img.php
Codice PHP:
<?php
session_start();
header("Content-type: image/png");
##genero il codice##
$lung_codice = 5;
for ($x=1; $x<=$lung_codice; $x++) {
if ($x % 2) {
$codice = $codice . chr(rand(97,122));
} else {
$codice = $codice . rand(0,9);
}
}
$_SESSION['captcha_c'] = $codice;
####
$im = @imagecreate(200, 50) or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 5, 70, 15, $_SESSION['captcha_c'], $text_color);
imagepng($im);
imagedestroy($im);
?>
form.php
Codice PHP:
<?php
session_start();
if ($_POST[captcha] == FALSE) {
echo "<form method=\"post\">
<img src=\"img.php\" alt=\"codice di sicurezza\" />
<input type=\"hidden\" name=\"captcha\" value=\"ok\" />
<input type=\"text\" id=\"codice_sicurezza\" name=\"codice_sicurezza\" />
<input type=\"submit\" value=\"verifica\" />
</form>";
} else {
//controllo che il codice immesso sia uguale a quello dell'immagine (salvato in sessione)
if ($_POST[codice_sicurezza] == $_SESSION['captcha_c']) {
echo "codice esatto";
}else {
echo "codice errato";
}
}
?>