php对Email(邮箱地址)进行强验证实现方法
内容摘要
这篇文章主要为大家详细介绍了php对Email(邮箱地址)进行强验证实现方法,具有一定的参考价值,可以用来参考一下。
对php对Email(邮箱地址)进行强验证的代码对此感兴趣的朋友,看看id
对php对Email(邮箱地址)进行强验证的代码对此感兴趣的朋友,看看id
文章正文
这篇文章主要为大家详细介绍了php对Email(邮箱地址)进行强验证实现方法,具有一定的参考价值,可以用来参考一下。
对php对Email(邮箱地址)进行强验证的代码对此感兴趣的朋友,看看idc笔记做的技术笔记!下面的php代码可以对电子邮件地址进行简单验证和强验证,简单验证验证邮件格式和主机是否存在,强验证会连接邮件服务器进行验证,需要比较长时间
/**
* php对Email(邮箱地址)进行强验证的代码
*
* @param
* @arrange 512-笔记网: 512Pic.com
**/
<?php
/*
* __construct($email) takes an email address to check
*
* simpleCheck() Tests to see if an email address is formatted correctly
* and the domain it belongs to exists, such as: gmail.com, yahoo.com
*
* strongCheck() Tests to see if an email address is valid and that the
* email actually accepts emails by actually connecting to the server.
* Note: strongCheck() can be slow
*/
class EmailValidator{
private $email = "";
private $mxhost = "";
public function __construct($email){
$this->email = $email;
$this->mxhost = $this->getMXHost();
}
public function strongCheck(){
if(filter_var($this->email, FILTER_VALIDATE_EMAIL) && $this->fConnect()){
return true;
}
return false;
}
public function simpleCheck(){
if(filter_var($this->email, FILTER_VALIDATE_EMAIL) && $this->getMXHost()){
return true;
}
return false;
}
private function fConnect(){
$fp = @fsockopen($this->mxhost, 25, $errno, $errstr, 5);
$ms_resp = "";
$b_server_found = false;
if($fp){
$ms_resp .= $this->send_command($fp, "HELO hi");
$ms_resp .= $this->send_command($fp, "MAIL FROM:<ryan@ryannaddy.com>");
$rcpt_text = $this->send_command($fp, "RCPT TO:<{$this->email}>");
$ms_resp .= $rcpt_text;
if(substr($rcpt_text, 0, 3) == "250"){
$b_server_found = true;
}
$ms_resp .= $this->send_command($fp, "QUIT");
fclose($fp);
}
return $b_server_found;
}
private function getMXHost(){
if(!empty($this->mxhost)){
return $this->mxhost;
}
list($user, $domain) = explode("@", $this->email);
getmxrr($domain, $hosts, $weights);
$priority = mt_getrandmax();
$key = 0;
if(empty($weights)){
return false;
}
foreach($weights as $k => $v){
if($v < $priority){
$key = $k;
$priority = $v;
}
}
return $hosts[$key];
}
private function send_command($fp, $out){
fwrite($fp, $out . "\r\n");
return $this->get_data($fp);
}
private function get_data($fp){
$s = "";
stream_set_timeout($fp, 2);
for($i = 0; $i < 2; $i++){
$s .=fgets($fp, 1024);
}
return $s;
}
}
$hosts = array(
"asdfsfd@adsfasdasd.com",
"asdfsfd@google.com",
"asdf!sfd@gmail.com",
"asdfsfd@yahoo.com",
"asd^sfd@44n5o$.com",
"dddasdf@gamil.com"
);
foreach($hosts as $host){
echo $host . "\n";
$em = new EmailValidator($host);
echo " ";
var_dump($em->simpleCheck());
echo " ";
var_dump($em->strongCheck());
}
/*** 来自php教程(www.idcnote.com) ***/
注:关于php对Email(邮箱地址)进行强验证实现方法的内容就先介绍到这里,更多相关文章的可以留意
代码注释