- Home
- Categorie
- Coding e Sistemistica
- PHP
- Form per l'invio di una e-mail risposta
-
Prima di tutto togli echo "Conferma ricevuta!"; se vuoi fare header("Location: $redirect");, altrimenti da errore, non puoi settare l'header dopo aver scritto testo nella pagina.
Per l'immagine come antispam puoi usare il sistema CAPTCHA, con una semplice ricerca (captcha in php) ne trovi un'infinità.Prova qui e *(http://www.w3facile.com/php/verifica-antispam-captcha-php-tutorial.html)i.
Ciao!
-
Prima di tutto togli echo "Conferma ricevuta!"; se vuoi fare header("Location: $redirect");, altrimenti da errore, non puoi settare l'header dopo aver scritto testo nella pagina.
Per l'immagine come antispam puoi usare il sistema CAPTCHA, con una semplice ricerca (captcha in php) ne trovi un'infinità.Prova qui e *(http://www.w3facile.com/php/verifica-antispam-captcha-php-tutorial.html)i.
Ciao!
-
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!