Walidacja poprawnosci pola e-mail

0

niech mi ktos powie jak w ponizszym kawalku kodu dopisac cos co sprawdzi mi poprawnosc podanego e-maila w formularzu?

// w zmienn¹ $text_body wpisujemy treœæ maila
$text_body = "Od: ".$_POST['imie']."\nE-mail: ".$_POST['email']."\nTemat: ".$_POST['temat']."\nWiadomosc:\n".$_POST['wiadomosc'];

$mail->Body = $text_body;
// adresatów dodajemy poprzez metode 'AddAddress'
$mail->AddAddress("[email protected]","BOK");

if($_POST['email']=="" or $_POST['temat']=="" or $_POST['wiadomosc']=="" or $_POST['imie']=="")
{
echo "<strong id='strongcontact'> Wypełnij wszystkie pola </strong>";

}else{

if(!$mail->Send()) {
echo "<strong id='strongcontact'>Bardzo nam przykro, ale e-mail nie został wyslany. Sprubój ponownie... </strong>";
echo $mail->ErrorInfo."<br>";
}else{

		
echo "<strong id='strongcontactok'> Dziękujemy za wiadomość, odpowiemy na Twój adres e-mail: ".$_POST['email']."</strong>";
$mail->ClearAddresses();
		$mail->ClearAttachments();
		
}
}
require_once("contact.html");
?> 
0
function poprawnyEmail($email){
  return eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email);
}

$text_body = "Od: ".$_POST['imie']."\nE-mail: ".$_POST['email']."\nTemat: ".$_POST['temat']."\nWiadomosc:\n".$_POST['wiadomosc'];
if(!poprawnyEmail($_POST['email'])echo 'Niepoprawny email!!!';
$mail->Body = $text_body;

Głębsze przemyślenia dotyczące funkcji sprawdzEmail znajdziesz tutaj: http://4programmers.net/Forum/Webmastering/112981-PHP_Walidacja_e-mail_a_zdrowy_rozsadek

1

@Loganek: Ta funkcja jest niezbyt dobra. Po pierwsze eregi() nie powinno się już używać, po drugie wyłoży się na niektórych TLD (np. .travel).

Lepsze będzie na przykład to (wzięte z CodeIgnitera, też można by ulepszyć jeszcze):

function valid_email($str)
{
    return (!preg_match("/^([a-z0-9+_-]+)(.[a-z0-9+_-]+)*@([a-z0-9-]+.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
}

@thailandes:
Tej funkcji powinieneś używać przed zrobieniem AddAddress - jeśli zwróci false, to skrypt powinien pokazać błąd i nie robić już nic więcej.

0

A może w JavaScript funkcja?

<script language="javascript"> 
function sprawdz_adres_email(x){
var adres=document.getElementById(x).value
var malpa=adres.indexOf('@');
kropka=adres.lastIndexOf('.');
if (malpa<2 || malpa>kropka)
{
alert("Adres e-mail wpisany niepoprawnie !");
document.getElementById(x).style.background="yellow";
}
else
{
document.getElementById(x).style.background="white";
}
return true;
}
</script>

Pozdrawiam:)

0

A może po prostu zrobić MX Lookup? I mail typu [email protected] nie przejdzie...

0

A może w JavaScript funkcja?
JavaScript można łatwo oszukać, więc nie polecam

0

Najlepiej walidować e-maila po dwóch stronach, tj. po stronie klienta (w JavaScript) i po stronie serwera (w PHP) :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1