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:

<?php
function full_validate_email ($Email)
{   $result = array();
    if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $Email)) 
    {  $result[0]=false;
          $result[1]="$Email is not properly formatted";
       return $result;
    }
   list ( $Username, $Domain ) = split ("@",$Email);
   if (getmxrr($Domain, $MXHost))
      $ConnectAddress = $MXHost[0];
   elseif (gethostbyname("mail.".$Domain))
      $ConnectAddress = "mail.".$Domain;
   else 
      $ConnectAddress = $Domain;
      

  $Connect = fsockopen ( $ConnectAddress, 25 );
    if ($Connect) 
    {
      if (ereg("^220", $Out = fgets($Connect, 1024))) 
      {    fputs ($Connect, "HELO ".$_SERVER['HTTP_HOST']."\r\n");
           $Out = fgets ( $Connect, 1024 );
           fputs ($Connect, "MAIL FROM: <{$Email}>\r\n");
           $From = fgets ( $Connect, 1024 );
           fputs ($Connect, "RCPT TO: <{$Email}>\r\n");
           $To = fgets ($Connect, 1024);
           fputs ($Connect, "QUIT\r\n");
           fclose($Connect);
            if (!ereg ("^250", $From) || !ereg ( "^250", $To )) 
            {  $result[0]=false;
               $result[1]="Server rejected address";
               return $result;
            }
        } 
        else 
        {   $result[0] = false;
            $result[1] = "No response from server";
            return $result;
        }
    } 
    else 
    {  $result[0]=false;
       $result[1]="Can not connect E-Mail server.";
       return $result;
    }

    $result[0]=true;
    $result[1]="$Email appears to be valid.";
    return $result;
}