cvs: phpweb /include email-validation.inc
| From: | Jesus M. Castagnetto | Date: | Thu, 01 Mar 2001 01:07:46 +0000 |
| Subject: | cvs: phpweb /include email-validation.inc | ||
| Groups: | php.mirrors | ||
| Request: | Send a blank email to php-mirrors+get-4095@lists.php.net to get a copy of this message | ||
jmcastagnetto Wed Feb 28 17:07:46 2001 EDT
Modified files:
/phpweb/include email-validation.inc
Log:
Simplified validation, w/o using getmxrr(). We just need to be more careful
when editing the notes :-)
Index: phpweb/include/email-validation.inc
diff -u phpweb/include/email-validation.inc:1.3 phpweb/include/email-validation.inc:1.4
--- phpweb/include/email-validation.inc:1.3 Wed Feb 28 03:55:51 2001
+++ phpweb/include/email-validation.inc Wed Feb 28 17:07:46 2001
@@ -1,187 +1,26 @@
<?php
-// using Manuel Lemos's email validation class
/*
- * email_validation.php
- *
- * @(#) $Header: /local/repository/phpweb/include/email-validation.inc,v 1.3 2001/02/28 11:55:51
jmcastagnetto Exp $
- *
+ * email_validation.inc
+ * $Id: email-validation.inc,v 1.4 2001/03/01 01:07:46 jmcastagnetto Exp $
*/
-class email_validation_class
-{
- var $email_regular_expression="^([-!#\$%&'*+./0-9=?A-Z^_
a-z{|}~
])+@([-!#\$%&'*+/0-9=?A-Z^_a-z{|}~ ]+\\.)+[a-zA-Z]{2,4}\$";
- var $timeout=0;
- var $localhost="";
- var $localuser="";
- var $debug=0;
- Function OutputDebug($message)
- {
- echo $message,"\n";
- }
-
- Function GetLine($connection)
- {
- for($line="";;)
- {
- if(feof($connection))
- return(0);
- $line.=fgets($connection,100);
- $length=strlen($line);
- if($length>=2
- && substr($line,$length-2,2)=="\r\n")
- {
- $line=substr($line,0,$length-2);
- if($this->debug)
- $this->OutputDebug("< $line");
- return($line);
- }
- }
- }
-
- Function PutLine($connection,$line)
- {
- if($this->debug)
- $this->OutputDebug("> $line");
- return(fputs($connection,"$line\r\n"));
- }
-
- Function ValidateEmailAddress($email)
- {
- return(eregi($this->email_regular_expression,$email)!=0);
- }
-
- Function ValidateEmailHost($email,$hosts=0)
- {
- if(!$this->ValidateEmailAddress($email))
- return(0);
- $user=strtok($email,"@");
- $domain=strtok("");
- if(GetMXRR($domain,&$hosts,&$weights))
- {
- $mxhosts=array();
- for($host=0;$host<count($hosts);$host++)
- $mxhosts[$weights[$host]]=$hosts[$host];
- KSort($mxhosts);
- for(Reset($mxhosts),$host=0;$host<count($mxhosts);Next($mxhosts),$host++)
- $hosts[$host]=$mxhosts[Key($mxhosts)];
- }
- else
- {
- $hosts=array();
- if(strcmp(@gethostbyname($domain),$domain)!=0)
- $hosts[]=$domain;
- }
- return(count($hosts)!=0);
- }
-
- Function VerifyResultLines($connection,$code)
- {
- while(($line=$this->GetLine($connection)))
- {
- if(!strcmp(strtok($line," "),$code))
- return(1);
- if(strcmp(strtok($line,"-"),$code))
- return(0);
- }
- return(-1);
- }
-
- Function ValidateEmailBox($email)
- {
- if(!$this->ValidateEmailHost($email,&$hosts))
- return(0);
- if(!strcmp($localhost=$this->localhost,"")
- && !strcmp($localhost=getenv("SERVER_NAME"),"")
- && !strcmp($localhost=getenv("HOST"),""))
- $localhost="localhost";
- if(!strcmp($localuser=$this->localuser,"")
- && !strcmp($localuser=getenv("USERNAME"),"")
- && !strcmp($localuser=getenv("USER"),""))
- $localuser="root";
- for($host=0;$host<count($hosts);$host++)
- {
- if($this->debug)
- $this->OutputDebug("Connecting to host
\"".$hosts[$host]."\"...");
- if(($connection=($this->timeout ?
fsockopen($hosts[$host],25,&$errno,&$error,$this->timeout) :
fsockopen($hosts[$host],25))))
- {
- if($this->debug)
- $this->OutputDebug("Connected.");
- 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)
- {
- if($this->debug)
- $this->OutputDebug("This host states that the address is ".($result ?
"" : "not ")."valid.");
- fclose($connection);
- if($this->debug)
- $this->OutputDebug("Disconnected.");
- return($result);
- } else { // Jesus M. Castagnetto
- if($this->debug)
- $this->OutputDebug("Unable to validate the address with this host.");
- fclose($connection);
- if($this->debug)
- $this->OutputDebug("Disconnected.");
- return false;
- }
- }
- else
- {
- if($this->debug)
- $this->OutputDebug("Failed.");
- return false; // JMC
- }
-
- }
- return(-1);
- }
-};
-
-
-// checks that is an *outside* host, and removes the
-// SPAM protection, before passing the address to the validation class
-
+// checks that is an *outside* host, and tries to remove anti-SPAM bits
function clean_AntiSPAM ($email) {
$remove_spam = "[-_]?(NO|I[-_]?HATE|DELETE|REMOVE)[-_]?(THIS)?(ME|SPAM)?[-_]?";
return eregi_replace($remove_spam,"",trim($email));
}
-function is_emailable_address( $email, $debug=0 ) {
+function is_emailable_address( $email) {
$hosts_regex="lists\.php\.net|chek.*\.com";
$excluded_hosts = ereg($hosts_regex,$email);
+ $email_regex="^([-!#\$%&'*+./0-9=?A-Z^_a-z{|}~
])+@([-!#\$%&'*+/0-9=?A-Z^_a-z{|}~ ]+\\.)+[a-zA-Z]{2,4}\$";
if (!$excluded_hosts && $email != "") {
- $validator = new email_validation_class;
- $validator->timeout=10;
- $validator->debug=$debug;
- return $validator->ValidateEmailBox($email);
+ return eregi($email_regex, $email);
} else {
return false;
}
}
-
-// test of the validation function
-// remove this part once all changes seem to work
-/*
-$test_add = array (
- "wrong-email-address@lists.php.net","jcastagnetto@yahoo.com",
- "some-wrong@asdas.com", "jcastagnetto-NO-SPAM@yahoo.com",
- "jcastagnetto@NoSpam-yahoo.com", "jmcastagnetto@chek2.com",
- "jcastagnetto-i-hate-spam@NOSPAMyahoo.com",
- "asasasd324324@php.net", "jcastagnetto-delete-this-@yahoo.com",
- "wrong-address-with@@@@-remove_me-and-some-i-hate_SPAM-stuff");
-
-while (list(,$v) = each($test_add)) {
- echo "The address: $v (".clean_AntiSpam($v).") is";
- if (!is_emailable_address(clean_AntiSPAM($v)))
- echo " not";
- echo " valid\n";
-}
-*/
?>