php验证邮箱是否真实存在
大家好,我是php新手,现在有个问题想请教大家,就是注册时验证该email地址是否真的存在,谢谢
环境win32+php5.45
test.php
<br><?php<br>echo "<center><br/>检查电子邮件地址的正确性:<br/>"; <br>require("email_validation.php"); <br>$newmail = "[email protected]"; <br>$validator=new email_validation_class; <br>$validator->timeout=10; <br><br>//if(IsSet($newemail) && strcmp($newemail,"")){<br> if( ($result=$validator->ValidateEmailBox($newmail) )<0){ <br> echo "不能确定您的信箱是否正确. 您的信箱离这里太远了吧?<br/>"; <br> return; <br> }else{ <br> echo "22222222";<br> if(!$result){ <br> echo "您输入的信箱地址是不正确的! :)<br/>"; <br> return; <br> }else{<br> echo "邮箱合法!<br/>"; <br> } <br> }<br><br>?><br>email_validation.php
功能说明(部分): 1,后台控制;所有前台显示页面,都在后台加以控制,不需登陆FTP即可更改全部的页面显示信息。 2,可选择用户发表的信息是否要求验证,如果选择只有通过验证后的信息才能在网页上显示。 3,推荐好友支持;当浏览信息时,可以选择“推荐”好友,只要输入对方的E-mail地址即可将此条信息发送到对的邮箱中。 4,预订信息支持;当访问者看到感兴趣的信息后,可选择“我要预订”向对方发送
<br><? <br>class email_validation_class <br>{ <br>//var $email_regular_expression="^([a-z0-9_] |//- |//.)+@(([a-z0-9_] |//-)+//.)+[a-z]{2,4}$"; <br>var $timeout=0; <br>var $localhost=""; <br>var $localuser=""; <br>var $hosts=0;<br><br>Function GetLine($connection) <br>{ <br>for($line="";;) <br>{ <br>if(feof($connection)) <br>return(0); <br>$line.=fgets($connection,100); <br>$length=strlen($line); <br>if($length>=2 && substr($line,$length-2,2)=="/r/n") <br>return(substr($line,0,$length-2)); <br>} <br>} <br><br>Function PutLine($connection,$line) <br>{ <br>return(fputs($connection,"$line/r/n")); <br>} <br><br>Function ValidateEmailAddress($email) { <br>//return(eregi($this->email_regular_expression,$email)!=0); <br>//origin:<br>//return(eregi("^([a-z0-9_] |//- |//.)+@(([a-z0-9_] |//-)+//.)+[a-z]{2,4}$",$email)!=0); <br><br>//return preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", $_REQUEST[$email]);<br>return preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/", $_REQUEST[$email]);<br><br>} <br><br>Function ValidateEmailHost($email,$hosts=0) <br>{ <br>if(!$this->ValidateEmailAddress($email)) <br>return(0); <br>$user=strtok($email,"@"); <br>$domain=strtok(""); <br>if(GetMXRR($domain,$hosts,$weights)) <br>{ <br>$mxhosts=array(); <br>for($host=0;$host<count($hosts);$host++) <br>$mxhosts[$weights[$host]]=$hosts[$host]; <br>KSort($mxhosts); <br>for(Reset($mxhosts),$host=0;$host<count($mxhosts);Next($mxhosts),$host++) <br>$hosts[$host]=$mxhosts[Key($mxhosts)]; <br>} <br>else <br>{ <br>$hosts=array(); <br>if(strcmp(@gethostbyname($domain),$domain)!=0) <br>$hosts[]=$domain; <br>} <br>return(count($hosts)!=0); <br>} <br><br>Function VerifyResultLines($connection,$code) <br>{ <br>while(($line=$this->GetLine($connection))) <br>{ <br>if(!strcmp(strtok($line," "),$code)) <br>return(1); <br>if(strcmp(strtok($line,"-"),$code)) <br>return(0); <br>} <br>return(-1); <br>} <br><br>Function ValidateEmailBox($email) <br>{ <br>if(!$this->ValidateEmailHost($email,$hosts)) <br>return(0); <br>if(!strcmp($localhost=$this->localhost,"") && !strcmp($localhost=getenv("SERVER_NAME"),"") && !strcmp($localhost=getenv("HOST"),"")) <br>$localhost="localhost"; <br>if(!strcmp($localuser=$this->localuser,"") && !strcmp($localuser=getenv("USERNAME"),"") && !strcmp($localuser=getenv("USER"),"")) <br>$localuser="root"; <br>for($host=0;$host<count($hosts);$host++) <br>{ <br>if(($connection=($this->timeout ? fsockopen($hosts[$host],25,$errno,$error,$this->timeout) : fsockopen($hosts[$host],25)))) <br>{ <br>if($this->VerifyResultLines($connection,"220")>0 && $this->PutLine($connection,"HELO $localhost") && $this->VerifyResultLines($connection,"250")>0 && $this->PutLine($connection,"MAIL FROM: <$localuser@$localhost>") && $this->VerifyResultLines($connection,"250")>0 && $this->PutLine($connection,"RCPT TO: <$email>") && ($result=$this->VerifyResultLines($connection,"250"))>=0) <br>{ <br>fclose($connection); <br>return($result); <br>} <br>fclose($connection); <br>} <br>} <br>return(-1); <br>} <br>}; <br><br>?> <br><br>










