added email validation.

This commit is contained in:
Marcel Naeve 2016-05-03 22:29:13 +02:00
parent 176ad1a681
commit 5d6a41ea85
3 changed files with 71 additions and 0 deletions

4
.idea/php.xml Normal file
View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PhpProjectSharedConfiguration" php_language_level="7" />
</project>

6
.idea/vcs.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

61
Validate.php Normal file
View File

@ -0,0 +1,61 @@
<?php
/**
* User: Marcel 'CoNfu5eD Naeve <confu5ed@serious-pro.de>
* Date: 03.05.2016
* Time: 21:28
*/
/**
* Class Validate.
*/
class Validate
{
/**
* Static function for validating email addresses with multiple secure levels and blacklist.
* @param string $email email address
* @param int $level secure level
* @param array $lists filter lists like whitelist, blacklist, dnsbl,..
* @return bool is the email address valid?
*/
static function email (string $email, int $level=1, array $lists=[]) : bool
{
$results = true;
$email = trim($email); // sanitize before validation
$split = explode('@', $email);
// Whitelisted?
if(isset($lists['whitelist'])) {
if(in_array($email, $lists['whitelist']))
return true;
}
// Blacklisted?
if(isset($lists['blacklist'])) {
if(in_array($email, $lists['blacklist']))
return false;
}
// check format
if($results && $level >= 1) {
if(filter_var($email, FILTER_VALIDATE_EMAIL) === false)
{
$results = false;
} else {
$results = true;
}
}
// check for dns MX entry
if($results && $level >= 2) {
$results = checkdnsrr($split[1], "MX");
}
// DNS Blacklist (domains)
if($results && isset($lists['dnsbl']) && $level >= 3) {
// TODO: check if domain is registered in dnsbl of list.
}
return $results;
}
}