Jak sprawdzić poprawność adresu e-mail?: Różnice pomiędzy wersjami

Z PHPEdia.pl
Skocz do: nawigacji, wyszukiwania
(Literówki, poprawa 1. kodu. Usuniecie reklam.)
m (korekta edytorska)
 
Linia 1: Linia 1:
 
==Prosta weryfikacja==
 
==Prosta weryfikacja==
Aby potwierdzić, że dany ciąg znaków jest e-mailem, najprościej jest sprawdzić czy zawiera on znak at (@).
+
Aby zweryfikować, czy dany ciąg znaków jest adresem e-mailem, wystarczy sprawdzić, czy zawiera znak at (@).
  
 
<source lang="php">
 
<source lang="php">
Linia 22: Linia 22:
 
</source>
 
</source>
 
==Zaawansowana weryfikacja==
 
==Zaawansowana weryfikacja==
Istnieje też możliwość sprawdzenia adresu e-mail pod kątem wszelkich nieprawidłowości jakie można zastać:
+
Istnieje też możliwość sprawdzenia adresu e-mail pod kątem wszelkich nieprawidłowości:
 
<source lang="php">
 
<source lang="php">
 
<?php
 
<?php
 
     /**
 
     /**
     * Funkcja sprawdza poprawność adresu e-mail na podstawie wyrażeś regularnych
+
     * Funkcja sprawdza poprawność adresu e-mail na podstawie wyrażeń regularnych
 
     * i weryfikacji danych z serwera DNS.
 
     * i weryfikacji danych z serwera DNS.
 
     *
 
     *
     * Funkcja nie działał pod systemem Ms Windows!
+
     * Funkcja nie działa pod systemem Ms Windows!
 
     *
 
     *
 
     * @author Bakus <bakus@php.pl>
 
     * @author Bakus <bakus@php.pl>
Linia 43: Linia 43:
 
             $username = $regs[1];
 
             $username = $regs[1];
 
             $host = $regs[2];
 
             $host = $regs[2];
             if (!checkdnsrr($host, "MX")) // Czy serwer obsługuje pocztą?
+
             if (!checkdnsrr($host, "MX")) // Czy serwer obsługuje pocztę?
 
             {
 
             {
 
                 return "Podany adres jest nieprawidłowy. Przyczyna błędu: Podany serwer nie obsługuje poczty.";
 
                 return "Podany adres jest nieprawidłowy. Przyczyna błędu: Podany serwer nie obsługuje poczty.";
 
             }else{
 
             }else{
                 if (!preg_match($userexp, $username)) // Login jest poprawy?
+
                 if (!preg_match($userexp, $username)) // Login jest poprawny?
 
                 {
 
                 {
 
                     return "Podany adres jest nieprawidłowy. Przyczyna błędu: Login zawiera niedozwolone znaki.";
 
                     return "Podany adres jest nieprawidłowy. Przyczyna błędu: Login zawiera niedozwolone znaki.";

Aktualna wersja na dzień 21:15, 19 lis 2008

Prosta weryfikacja

Aby zweryfikować, czy dany ciąg znaków jest adresem e-mailem, wystarczy sprawdzić, czy zawiera znak at (@).

<?php
function valid_email($str)
{
    if(strstr($str,'@'))
    {
        return true;
    }
    return false;
}
 
$strGoodEmail='foo@bar.com';
$strBadEmail='foobar.com';
 
valid_email($strGoodEmail); // zwroci true
valid_email($strBadEmail); //zwroci false
 
?>

Zaawansowana weryfikacja

Istnieje też możliwość sprawdzenia adresu e-mail pod kątem wszelkich nieprawidłowości:

<?php
    /**
     * Funkcja sprawdza poprawność adresu e-mail na podstawie wyrażeń regularnych
     * i weryfikacji danych z serwera DNS.
     *
     * Funkcja nie działa pod systemem Ms Windows!
     *
     * @author Bakus <bakus@php.pl>
     * @param string Adres e-mail do weryfikacji
     * @return mixed (bool) true gdy adres będzie poprawny, lub komunikat błędu
     */
    function ValidateEmail($email)
    {
        $wholeexp = '/^(.+?)@(([a-z0-9\.-]+?)\.[a-z]{2,5})$/i';
        $userexp = "/^[a-z0-9\-\_\+\,\.]+$/i";
        if (preg_match($wholeexp, $email, $regs)) // EMail jest poprawny składniowo?
        {
            $username = $regs[1];
            $host = $regs[2];
            if (!checkdnsrr($host, "MX")) // Czy serwer obsługuje pocztę?
            {
                return "Podany adres jest nieprawidłowy. Przyczyna błędu: Podany serwer nie obsługuje poczty.";
            }else{
                if (!preg_match($userexp, $username)) // Login jest poprawny?
                {
                    return "Podany adres jest nieprawidłowy. Przyczyna błędu: Login zawiera niedozwolone znaki.";
                }else{
                    return true;
                }
            }
        }else{
            return "Podany adres nadawcy jest nieprawidłowy.";
        }
    }
?>


Jest to element FAQ, czyli zestawienia odpowiedzi na najczęściej zadawane pytania.

Zestawienie: Informacje | Podstawy PHP | Porady praktyczne | Pytania z forum | Bezpieczeństwo