Ho dei problemi con uno script per validare le e-mail
Codice PHP:
<?php
class ccms_email //gestisce l'invio delle email
{
var $my_email="sirdaniel.nm@gmail.com";
function validate_mail($email)
{ //controlla la validità dell'email di chi invia
if(phpversion() >= 5.2.0)
{ return filter_var($email, FILTER_VALIDATE_MAIL); }
else
{ return ereg("^[a-z0-9_]+@[a-z0-9\-]+\.[a-z0-9\-\.]+$]", $email); }
}
function send_mail($messaggio, $mail, $nome, $mittente)
{ //invia l'email
//if(!$this->validate_mail($mittente))
// { return false; }
$text = "Messaggio inviato da: $nome - $mittente\n";
$text .= "\nTesto messaggio:\n";
$text .= $messaggio;
$text = strip_tags($text); //elimina il testo inserito tra i tag < e >
$header = "From: <$mittente>";
$oggetto="E-mail dal sito \"SiR DanieL\"";
$sended = mail($this->my_email, $oggetto, $text, $header);
if(!$sended)
{ return false; }
else
{ return true; }
}
}
Se lo uso così com'è funziona "bene" poichè invio il messaggio senza validare l'e-mail.
Se invece decommento
Codice PHP:
//if(!$this->validate_mail($mittente))
// { return false; }
Mi restituirà sempre e comunque false nonostante l'e-mail inserita sia valida.
Il form che invia la mail è questo:
Codice PHP:
<form method="post" action="author.php">
<input type="text" name="name" value="Inserisci il tuo nome" /> *
<input type="text" name="mail" value="Inserisci la tua e-mail" /> *
<textarea name="messaggio" cols="80" rows="15">Inserisci il tuo messaggio</textarea>
<input type="submit" value="Invia e-mail" name="ok" />
</form>
<?php
if(isset($_POST['name']) && isset($_POST['mail']) && isset($_POST['messaggio']))
{
if(!$ccms_email->send_mail($_POST['messaggio'], $ccms_email->my_email, $_POST['name'], $_POST['mail']))
{ echo "Impossibile inviare il messaggio. Riprova."; }
else
{ echo "Messaggio inviato correttamente."; }
}
else
{ echo "I campi contrassegnati da * sono obbligatori."; }
?>