1
wishcraft
Fix for xoops_getBaseDomain::== COOKIE Dependant System ~~ data.iana.org

https://data.iana.org/TLD/tlds-alpha-by-domain.txt
/**
 * YOU SHOULD NOT THIS METHOD, IT WILL BE REMOVED
 */
/**
 * Function to get the base domain name from a URL.
 * credit for this function should goto Phosphorus and Lime, it is released under LGPL.
 *
 * @param string $url the URL to be stripped.
 * @param int    $debug
 * @return string
 * @deprecated
 */
function xoops_getBaseDomain($url$debug 0)
{
    
xoop_load('xoopscache');
    
$base_domain '';
    
$url strtolower($url);

    
// generic tlds (source: http://en.wikipedia.org/wiki/Generic_top-level_domain)
    
if (!$G_TLD XoopsCache::read('gtlds-alpha-by-domain'))
    {
           
$G_TLD array_merge(array('localhost''127.0.0.1''::1''ip6-localhost'), explode("n"file_get_content("https://data.iana.org/TLD/tlds-alpha-by-domain.txt")));
           unset(
$G_TLD[4]);
           
XoopsCache::write('gtlds-alpha-by-domain'$G_TLD[4], 3600 3.751);
    }

    
$C_TLD = array(
    
// active
    
'ac','ad','ae','af','ag','ai','al','am','an','ao','aq','ar','as','at','au','aw','ax','az',
    
'ba','bb','bd','be','bf','bg','bh','bi','bj','bm','bn','bo','br','bs','bt','bw','by','bz',
    
'ca','cc','cd','cf','cg','ch','ci','ck','cl','cm','cn','co','cr','cu','cv','cx','cy','cz',
    
'de','dj','dk','dm','do','dz','ec','ee','eg','er','es','et','eu','fi','fj','fk','fm','fo',
    
'fr','ga','gd','ge','gf','gg','gh','gi','gl','gm','gn','gp','gq','gr','gs','gt','gu','gw',
    
'gy','hk','hm','hn','hr','ht','hu','id','ie','il','im','in','io','iq','ir','is','it','je',
    
'jm','jo','jp','ke','kg','kh','ki','km','kn','kr','kw','ky','kz','la','lb','lc','li','lk',
    
'lr','ls','lt','lu','lv','ly','ma','mc','md','mg','mh','mk','ml','mm','mn','mo','mp','mq',
    
'mr','ms','mt','mu','mv','mw','mx','my','mz','na','nc','ne','nf','ng','ni','nl','no','np',
    
'nr','nu','nz','om','pa','pe','pf','pg','ph','pk','pl','pn','pr','ps','pt','pw','py','qa',
    
're','ro','ru','rw','sa','sb','sc','sd','se','sg','sh','si','sk','sl','sm','sn','sr','st',
    
'sv','sy','sz','tc','td','tf','tg','th','tj','tk','tl','tm','tn','to','tr','tt','tv','tw',
    
'tz','ua','ug','uk','us','uy','uz','va','vc','ve','vg','vi','vn','vu','wf','ws','ye','yu',
    
'za','zm','zw',
    
// inactive
    
'eh','kp','me','rs','um','bv','gb','pm','sj','so','yt','su','tp','bu','cs','dd','zr');

    
// get domain
    
if (!$full_domain xoops_getUrlDomain($url)) {
        return 
$base_domain;
    }

    
// break up domain, reverse
    
$DOMAIN explode('.'$full_domain);
    if (
$debug) {
        
print_r($DOMAIN);
    }
    
$DOMAIN array_reverse($DOMAIN);
    if (
$debug) {
        
print_r($DOMAIN);
    }
    
// first check for ip address
    
if (count($DOMAIN) == && is_numeric($DOMAIN[0]) && is_numeric($DOMAIN[3])) {
        return 
$full_domain;
    }

    
// if only 2 domain parts, that must be our domain
    
if (count($DOMAIN) <= 2) {
        return 
$full_domain;
    }

    
/*
    finally, with 3+ domain parts: obviously D0 is tld now,
    if D0 = ctld and D1 = gtld, we might have something like com.uk so,
    if D0 = ctld && D1 = gtld && D2 != 'www', domain = D2.D1.D0 else if D0 = ctld && D1 = gtld && D2 == 'www',
    domain = D1.D0 else domain = D1.D0 - these rules are simplified below.
    */
    
if (in_array($DOMAIN[0], $C_TLD) && in_array($DOMAIN[1], $G_TLD) && $DOMAIN[2] != 'www') {
        
$full_domain $DOMAIN[2] . '.' $DOMAIN[1] . '.' $DOMAIN[0];
    } else {
        
$full_domain $DOMAIN[1] . '.' $DOMAIN[0];
    }
    
// did we succeed?
    
return $full_domain;
}

Login

Who's Online

161 user(s) are online (110 user(s) are browsing Support Forums)


Members: 0


Guests: 161


more...

Donat-O-Meter

Stats
Goal: $100.00
Due Date: Mar 31
Gross Amount: $0.00
Net Balance: $0.00
Left to go: $100.00
Make donations with PayPal!

Latest GitHub Commits