Ciao....
ho un formmail con il controllo capcha, all'interno dello script di configurazione c'e' questo codice (premeto che funziona tutto bene):
Codice PHP:
<?php
session_start();
$_SESSION['email'] = urldecode($_POST['email']);
$_SESSION['name'] = urldecode($_POST['name']);
$_SESSION['citta'] = urldecode($_POST['citta']);
$_SESSION['nazione'] = urldecode($_POST['nazione']);
$_SESSION['telefono'] = urldecode($_POST['telefono']);
$_SESSION['subject'] = urldecode($_POST['subject']);
$_SESSION['comments'] = urldecode($_POST['comments']);
$_SESSION['user_code'] = urldecode($_POST['user_code']);
$subject = urldecode($_POST['subject']);
?>
<?php
require('formcaptcha.inc.php');
//validate email function
function validate_email($email)
{
// Create the syntactical validation regular expression
$regexp = "^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$";
// Presume that the email is invalid
$valid = 0;
// Validate the syntax
if (eregi($regexp, $email))
{
list($username,$domaintld) = split("@",$email);
// Validate the domain
if (getmxrr($domaintld,$mxrecords))
$valid = 1;
} else {
$valid = 0;
}
return $valid;
}
$email = $_SESSION['email'];
if (validate_email($email))
{
echo "
";
}else{
echo "Inserisci una email valida!
";
redirect();
}
// redirect the user
function redirect()
{
echo "Attendere prego.... <img src=\"waiting.gif\" alt=\"waiting\"/>
";
echo "<meta http-equiv=\"refresh\" content=\"10;url=redirect.php\"/></div>";
exit();
}
//test for empty fields
if (empty($_SESSION['name']))
{
echo "<div>Attenzione!!! devi inserire il tuo nome...
";
redirect();
}
if (empty($_SESSION['subject']))
{
echo "<div>Attenzione!!! devi inserire un oggetto...
";
redirect();
}
if (empty($_SESSION['email']))
{
echo "<div>Attenzione!!! devi inserire un indirizzo email...
";
redirect();
}
if (empty($_SESSION['telefono']))
{
echo "<div>Attenzione!!! devi inserire un numero di telefono...
";
redirect();
}
if (empty($_SESSION['citta']))
{
echo "<div>Attenzione!!! devi inserire una città...
";
redirect();
}
if (strlen($_SESSION['comments']) > 300)
{
echo " Attenzione!!! il limite massimo sono 300 caratteri...
";
redirect();
}
if (empty($_SESSION['comments']))
{
echo "<div>Attenzione!!! devi inserire un messaggio...
";
redirect();
}
// captcha code
if (PhpCaptcha::Validate($_SESSION['user_code'])) {
echo "<div>Grazie ".$_SESSION['name'].", per averci contattato
";
echo "Questo è ciò che hai inviato
";
echo "Email: ".$_SESSION['email']."
";
echo "Citta: ".$_SESSION['citta']."
";
echo "Nazione: ".$_SESSION['nazione']."
";
echo "Telefono: ".$_SESSION['telefono']."
";
echo "Nome e Cognome: ".$_SESSION['name']."
";
echo "Oggetto: ".$_SESSION['subject']."
";
echo "Messaggio: " .$_SESSION['comments']."
";
echo "Codice di sicurezza inserito: ".$_SESSION['user_code']."
";
echo "Attendi qualche istante stai per essere reindirizzato ...<img src=\"waiting.gif\" alt=\"waiting\"/>
";
echo "<meta http-equiv=\"refresh\" content=\"10;url=http://www.miosito.it/redirect.html\"/></div>";
// Send mailuser set
$mailuser = ('mailcontatto@miosito.it');
// To send HTML mail, the Content-type header must be set
$headers .= 'E-mail inviata da: '.$email. "\r\n";
$headers .= 'Nome e Cognome: '.$name. "\r\n";
$headers .= 'Citta: '.$citta. "\r\n";
$headers .= 'Nazione: '.$nazione. "\r\n";
$headers .= 'Telefono: '.$telefono. "\r\n";
$mail_body = 'Messaggio inviato: '. $_SESSION['comments']. "\r\n";
$mail_body.= $headers;
//wrap the email text every 200 characters
$mail_body = wordwrap($mail_body, 200, "\n", true);
mail ($mailuser, $subject, $mail_body);
//if all is well destroy the session
session_destroy();
}
else
{
echo "<div>Attenzione, hai inserito un codice errato...
Attendere prego ... <img src=\"waiting.gif\" alt=\"waiting\"/>
";
echo "<meta http-equiv=\"refresh\" content=\"15;url=redirect.php\"/></div>";
}
?>
quando un utente compila il modulo inserisce l'email e invia il modulo, a me arriva una mail dal mio server tipo: anonimus@mioserve.com e non dall'utente che ha inviato il form.
forse manca un controllo sulla stringa di chi invia il form???