dovrei mettere una immagine di verifica per evitare gli spambot...
chi mi puo' aiutare???
grazie
dovrei mettere una immagine di verifica per evitare gli spambot...
chi mi puo' aiutare???
grazie
Se ne è parlato un po' di tempo fa, prova a cercare.
Ciao!
non riesco a trovare nulla...
mi daresti qualche sggerimento?
grazie
Devi usare le GD e le sessioni...se vuoi ti do in pasto il codice..!
grazie leo, mi faresti un gran piacere
allora...
Questa sopra potrebbe essere la pagina paginacolcaptcha.php ...Codice PHP:
<?
header("Content-Type: image/jpeg");
$rand1 = rand(0,99);
$rand2 = array("A","B","C","D","E","F");
$rand_2 = array_rand($rand2);
$rand2 = $rand2[$rand_2];
$rand3 = array("G","H","I","L","M");
$rand_3 = array_rand($rand3);
$rand3 = $rand3[$rand_3];
$rand4 = rand(0,99);
$ok = $rand1.$rand2.$rand3.$rand4;
if($_SESSION['numeri'] == "") { $_SESSION['numeri'] = $ok; }
$im = imagecreate(100, 30);//immagine di 100*30px
$back = imagecolorallocate($im, 255,0,0);//background rosso
$fore = imagecolorallocate($im, 255,255,255);//testo bianco
imagestring($im, 5, 0, 5, $_SESSION['numeri'], $fore);//scrivo i randoms sull'immagine
imagepng($im);
imagedestroy($im);
?>
Questo lo metti come <img src="paginacolcaptcha.php" /> nella pagina del gb.. e per convalidare..
Naturalmente intorno c'è tutto l'altro codice per inviare il mex sul gb...vedi te come includerlo!Codice PHP:
<?
session_start();
?>
//ALTRO CODICE//
<?
if($_POST['invia']) { //la convalida del post Invia
//ALTRO CODICE//
if($_SESSION['numeri'] == $_POST['numeri']) {
echo "Codice valido!";
}
//ALTRO CODICE//
}
?>
<img src="paginacolcaptcha.php" /><input type="text" name="numeri" />Inserisci codice di sicurezza<br />
<input type="submit" name="invia" value="Invia messaggio" />
Provalo, dovrebbe funzionare...
grazie leo, ho provato ma mi sa che non va...
ho postato mettendo il codice di sicurezza giusto e riesco a postare
ho postato senza mettere il codice giusto e mi fa postare lo stesso
Ultima modifica di phpone : 18-08-2006 alle ore 01.05.38
Ti posto quello che uso io:
Il carattere lo trovi quiCodice PHP:
<?php
/*
CAPTCHA IMAGE GENERATOR
Autore: Luca Zorzi (aka Tuttoeniente) for TNTforum
Licenza: GNU/GPL
Ultima modifica: 18.59 20/06/2006
*/
session_start();
$n = 6; //Numero di caratteri
$w = (35 * $n);
$h = 35;
$img = imagecreate($w, $h);
$bgcolor = imagecolorallocate($img, 255, 255, 255);
$txtcolor = imagecolorallocate($img, 0, 0, 0);
$char = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; //Ho messo solo lettere maiuscole perché il carattere che ho scelto ha solo quelle ;)
for($i = 0; $i < $n; $i++){
$r = rand(0, (strlen($char) - 1));
@$txt .= $char[$r];
imagettftext($img, 25, rand(-15, 15), (35 * $i), 30, $txtcolor, 'font.ttf', $char[$r]);
}
$_SESSION['rand_txt'] = $txt;
for($i = 0; $i < 1500; $i++){
imagesetpixel($img, rand(0, ($w - 1)), rand(0, ($h - 1)), imagecolorallocate($img, 210, 210, 210));
}
$imga = imagecreatetruecolor(($w * 5), ($h * 5));
imagecopyresized($imga, $img, 0, 0, 0, 0, ($w * 5), ($h * 5), $w, $h);
header("Content-type: image/png");
imagepng($img);
?>
Poi per il controllo devi fare così:
Il strtoupper perché come ho scritto in un commento nello script il font che tti ho linkato ha solo lettere maiuscole e numeri (o meglio, ha anche le minuscole che però sono uguali alle maiuscole ).Codice PHP:
<?php
session_start();
if(strtoupper($_POST['campo-del-codice-inserito-dall-utente']) == $_SESSION['rand_txt']){
//qui se il codice è giusto
}else{
//qui se non lo è
}
?>
Ultima modifica di tuttoeniente2 : 18-08-2006 alle ore 12.52.16
@tuttoeniente2: questo script si potrebbe usare anche in registrazioni? io non ho capito come farlo funzionare, cioè dopo che metto tutto il codice, poi come faccio a farlo "funzionare"?
Certo, basta inserire un'immagine al momento dell'iscrizione, che richiama lo script, che io ho chiamato anti-robot.phpOriginalmente inviato da TurkoSoft
Come vedi dal codice, di fianco all'immagine c'è un campo dove l'utente è invitato a trascrivere il codice che viene visualizzato nell'immagine a lato, che è richiamabile da uno script php, che deve obbligatoriamente presentare session_start(); come prima istruzione, tramite la variabile $_SESSION['rand_txt']Codice HTML:<img src="anti-robot.php"> Scrivi il codice dell'immagine a fianco: <input type="text" name="random">
Come ho spiegato nel post #8, il carattere che ho linkato visualizza solo lettere maiuscole e per evitare problemi, al momento del controllo del codice inserito dall'utente è meglio trasformarlo via php in lettere tutte maiuscole, con la funzione strtoupper()
Spero di essermi spiegato bene.
In ogni caso il risultato dello script che genera lettere casuali lo puoi vedere qui