ugrás a tartalomhoz

Lehet PHP-ben ellenőrizni, hogy valós-e egy e-mail cím?

Sovereign · 2006. Dec. 18. (H), 13.31
Egy kérdés.

PHP-ből lehet valahogy ellenőrizni hogy a regisztráció során megadott e-mail cím valós e???
 
1

igen

ene · 2006. Dec. 18. (H), 14.03
lehet
2

ilyesforman tennem...

Délczeg Gábor · 2006. Dec. 18. (H), 14.06
- megnezheted, hogy az email cimben szereplo hosthoz van -e MX rekord (egyaltalan letezik -e a host) , getmxrr(), checkdnsrr();
- kuldhetsz email -t a megadott cimre egy aktivalo koddal/linkkel;
4

válasz

Sovereign · 2006. Dec. 19. (K), 08.31
Köszönöm mindekinek!

Kipróbálom!!
3

lehet

Cadeyrn · 2006. Dec. 18. (H), 14.16
Üdv!

Először: regex, hogy e-mail formátumú-e a cím. Utána kommunikáció az MX serverrel, megnézed, létezik-e a postafiók.
Az utóbbi viszont piszok lassú tud lenni, tehát azt csak kivételes esetekben érdemes ellenőrizni, sokszor elég, ha megnézed, létezik-e a domain.

Ezt valahol a neten szedtem össze:
  1. <?php  
  2. function full_validate_email ($Email)  
  3. {   $result = array();  
  4.     if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"$Email))   
  5.     {  $result[0]=false;  
  6.           $result[1]="$Email is not properly formatted";  
  7.        return $result;  
  8.     }  
  9.    list ( $Username$Domain ) = split ("@",$Email);  
  10.    if (getmxrr($Domain$MXHost))  
  11.       $ConnectAddress = $MXHost[0];  
  12.    elseif (gethostbyname("mail.".$Domain))  
  13.       $ConnectAddress = "mail.".$Domain;  
  14.    else   
  15.       $ConnectAddress = $Domain;  
  16.         
  17.   
  18.   $Connect = fsockopen ( $ConnectAddress, 25 );  
  19.     if ($Connect)   
  20.     {  
  21.       if (ereg("^220"$Out = fgets($Connect, 1024)))   
  22.       {    fputs ($Connect"HELO ".$_SERVER['HTTP_HOST']."\r\n");  
  23.            $Out = fgets ( $Connect, 1024 );  
  24.            fputs ($Connect"MAIL FROM: <{$Email}>\r\n");  
  25.            $From = fgets ( $Connect, 1024 );  
  26.            fputs ($Connect"RCPT TO: <{$Email}>\r\n");  
  27.            $To = fgets ($Connect, 1024);  
  28.            fputs ($Connect"QUIT\r\n");  
  29.            fclose($Connect);  
  30.             if (!ereg ("^250"$From) || !ereg ( "^250"$To ))   
  31.             {  $result[0]=false;  
  32.                $result[1]="Server rejected address";  
  33.                return $result;  
  34.             }  
  35.         }   
  36.         else   
  37.         {   $result[0] = false;  
  38.             $result[1] = "No response from server";  
  39.             return $result;  
  40.         }  
  41.     }   
  42.     else   
  43.     {  $result[0]=false;  
  44.        $result[1]="Can not connect E-Mail server.";  
  45.        return $result;  
  46.     }  
  47.   
  48.     $result[0]=true;  
  49.     $result[1]="$Email appears to be valid.";  
  50.     return $result;  
  51. }