- Home
- Categorie
- Coding e Sistemistica
- PHP
- Form per l'invio di una e-mail risposta
-
Si, ho creato la pagina captcha.php con il seguente codice:
<?php
header("Content-type: image/png");
$x = 200;
$y = 75;
$code = substr($_GET['code'],0,9);
$space = $x / (strlen($code)+1);$img = imagecreatetruecolor($x,$y);
$bg = imagecolorallocate($img,255,255,255);
$border = imagecolorallocate($img,0,0,0);
$colors[] = imagecolorallocate($img,128,64,192);
$colors[] = imagecolorallocate($img,192,64,128);
$colors[] = imagecolorallocate($img,108,192,64);imagefilledrectangle($img,1,1,$x-2,$y-2,$bg);
imagerectangle($img,0,0,$x-1,$y-2,$border);for ($i=0; $i< strlen ($code); $i++)
{
$color = $colors[$i % count($colors)];
imagettftext($img,28+rand(0,8),-20+rand(0,40),($i+0.3)*$space,50+rand(0,10),$color,'arial.ttf',$code{$i});
}for($i=0;$i<400;$i++)
{
$x1 = rand(3,$x-3);
$y1 = rand(3,$y-3);
$x2 = $x1-2-rand(0,8);
$y2 = $y1-2-rand(0,8);
imageline($img,$x1,$y1,$x2,$y2,$colors[rand(0,count($colors)-1)]);
}imagepng($img);
?>E caricato nella stessa cartella sul server arial.ttf.
Digitando il Link ch-regio-info.ch/captcha.php?code=test viene generato il codice, ma non ho capito come poi integrarlo come controllo nella pagina eintragen.htm.
-
Metti un campo di testo dove scrivere l'utente deve ricopiare il codice dell'immagine.
Poi all'invio, controlli il codice inserito se è uguale a quello utilizzato dall'immagine.
Puoi utilizzare le sessioni per questo:session_start(); $_SESSION["code"] = "test"; ... <img src="captcha.php" /> Ricopia codice: <input type="text" name="nospam" /> ... in "captcha.php" aggiungi ... session_start(); header("Content-type: image/png"); $code = substr($_SESSION['code'],0,9); ... nella pagina che riceve ... if($_POST["nospam"] != $_SESSION["code"]) echo "Errore SPAM";
-
Metti un campo di testo dove scrivere l'utente deve ricopiare il codice dell'immagine.
Poi all'invio, controlli il codice inserito se è uguale a quello utilizzato dall'immagine.
Puoi utilizzare le sessioni per questo:session_start(); $_SESSION["code"] = "test"; ... <img src="captcha.php" /> Ricopia codice: <input type="text" name="nospam" /> ... in "captcha.php" aggiungi ... session_start(); header("Content-type: image/png"); $code = substr($_SESSION['code'],0,9); ... nella pagina che riceve ... if($_POST["nospam"] != $_SESSION["code"]) echo "Errore SPAM";
-
Scusa, questa prima parte
session_start();
$_SESSION["code"] = "test"dove la dovrei mettere?
-
Devi metterla nella pagina dove c'è il form da compilare, così come il tag img che punta al file captcha.php
Es.
<?php session_start(); $_SESSION["code"] = "test" ?> <html ... ... <form ... ... <img src="captcha.php" /> Ricopia codice: <input type="text" name="nospam" />
-
si, ma in ch-regio-info.ch/eintragen.htm non mi appare nessun testo.
-
Converti la pagina html in php "eintragen.php", altrimenti non viene interpretato il codice php iniziale.
-
Ciao, ho fatto e in effetti funziona, o meglio appare la scritta, solo che invece di generare un testo questa riproduce sempre solo la parola "test" e inoltre anche scrivendo la parola giusta da errore come SPAM.
-
Nella pagina con il form di invio:
$_SESSION["code"] = "test";
definisce la parola chiave che deve essere copiata dall'utente.
Se vuoi del testo casuale metti in questo caso:function codice_casuale($len) { $caratteri = "abcdefghiljkmnopqrstuvwxyz0123456789"; $codice = ""; for($i = 0; $i <= $len; $i++) { $random = rand(0, strlen($caratteri) - 1); $codice .= substr($caratteri, $random, 1); } return $codice; } $_SESSION["code"] = codice_casuale(5);
Mentre, per risolvere il controllo che restituisce sempre spam, devi aggiungere session_start(); all'inizio del file che invia l'email, mi sono dimenticato di metterlo nel post precedente.
-
Grazie mille, mi hai dato veramente un grande aiuto!
Ora sembra funzionare correttamente
Grazie ancora
-
Prego!