diff --git a/boot.php b/boot.php index 05ec444620..83828a0df5 100644 --- a/boot.php +++ b/boot.php @@ -848,6 +848,36 @@ function allowed_url($url) { return $found; }} +if(! function_exists('allowed_email')) { +function allowed_email($email) { + + + $domain = strtolower(substr($email,strpos($email,'@') + 1)); + if(! $domain) + return false; + + $str_allowed = get_config('system','allowed_email'); + if(! $str_allowed) + return true; + + $found = false; + + $fnmatch = function_exists('fnmatch'); + $allowed = explode(',',$str_allowed); + + if(count($allowed)) { + foreach($allowed as $a) { + $pat = strtolower(trim($a)); + if(($fnmatch && fnmatch($pat,$host)) || ($pat == $host)) { + $found = true; + break; + } + } + } + return $found; +}} + + if(! function_exists('format_like')) { function format_like($cnt,$arr,$type,$id) { if($cnt == 1) diff --git a/mod/register.php b/mod/register.php index e65ba7c9b3..b15ca4fb2b 100644 --- a/mod/register.php +++ b/mod/register.php @@ -65,6 +65,12 @@ function register_post(&$a) { dbesc($email) ); + if(!eregi('[A-Za-z0-9._%-]+@[A-Za-z0-9._%-]+\.[A-Za-z]{2,6}',$email)) + $err .= t(' Not valid email.'); + + if(! allowed_email($email)) + $err .= t(' Your email domain is not among those allowed on this site.'); + if($r !== false && count($r)) $err .= t(' Your email address is already registered on this system.') ;