- Home
- Categorie
- Coding e Sistemistica
- PHP
- Form per l'invio di una e-mail risposta
-
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!