1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-04 21:57:51 +02:00

Issue #225 - Better Domain and Subdomain detection - as used in v1.x

This commit is contained in:
Cameron
2013-05-26 13:52:43 -07:00
parent 36960d846e
commit 826bd9b68d

View File

@@ -2732,23 +2732,32 @@ class e107
define('CHARSET', 'utf-8'); // set CHARSET for backward compatibility
// Define the domain name and subdomain name.
if($_SERVER['HTTP_HOST'] && is_numeric(str_replace(".","",$_SERVER['HTTP_HOST'])))
if(is_numeric(str_replace(".","",$_SERVER['HTTP_HOST'])))
{
$srvtmp = ''; // Host is an IP address.
$domain = FALSE;
$subdomain = FALSE;
}
else
{
$srvtmp = explode('.',str_replace('www.', '', $_SERVER['HTTP_HOST']));
}
define('e_SUBDOMAIN', (count($srvtmp)>2 && $srvtmp[2] ? $srvtmp[0] : false)); // needs to be available to e107_config.
if(e_SUBDOMAIN)
if(preg_match("/\.?([a-z0-9-]+)(\.(com|net|org|co|me|ltd|plc|gov)\.[a-z]{2})$/i", $_SERVER['HTTP_HOST'], $m)) //eg. mysite.co.uk
{
unset($srvtmp[0]);
$domain = $m[1].$m[2];
}
elseif(preg_match("/\.?([a-z0-9-]+)(\.[a-z]{2,})$/i", $_SERVER['HTTP_HOST'], $m))// eg. .com/net/org/ws/biz/info
{
$domain = $m[1].$m[2];
}
else
{
$domain = FALSE; //invalid domain
}
define('e_DOMAIN',(count($srvtmp) > 1 ? (implode('.', $srvtmp)) : false)); // if it's an IP it must be set to false.
$replace = array(".".$domain,"www.","www",$domain);
$subdomain = str_replace($replace,'',$_SERVER['HTTP_HOST']);
}
define("e_DOMAIN", $domain);
define("e_SUBDOMAIN",($subdomain) ? $subdomain : FALSE);
define('e_UC_PUBLIC', 0);
define('e_UC_MAINADMIN', 250);