Глобальные переменные (и проверка на мобильность по пути)

Есть массив $GLOBALS, который виден везде. И с помощью которого можно передавать информацию. На страницу или в темплейт.

Например, в header, где-нибудь в начале скрипта, определяем тип устройства. Мобильный?

function IsMobileDevice() { 
if(stristr(@$_SERVER['HTTP_USER_AGENT'],'windows')&&!stristr(@$_SERVER['HTTP_USER_AGENT'],'windows ce')) return false;
if(preg_match('/up.browser|up. link |windows ce|iemobile|mini|mmp|symbian|midp|wap|phone|pocket|mobile|pda|psp/i',    @$_SERVER['HTTP_USER_AGENT'])) return true;
if(isset($_SERVER['HTTP_ACCEPT'])&&(stristr($_SERVER['HTTP_ACCEPT'],'text/vnd.wap.wml')||    stristr($_SERVER['HTTP_ACCEPT'],'application/vnd.wap.xhtml xml'))) return true;
if(isset($_SERVER['HTTP_X_WAP_PROFILE'])||isset($_SERVER['HTTP_PROFILE'])||    isset($_SERVER['X-OperaMini-Features'])||isset($_SERVER['UA-pixels'])) return true;
$a = array ('acs-','alav','alca','amoi','audi','aste','avan','benq','bird','blac',
    'bla z','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',
    'ipaq','java', 'jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',
    'maui','maxo','midp','mi ts','mmef','mobi','mot-','moto','mwbp','nec-',
    'newt','noki','opwv','palm','pana' ,'pant','pdxg','phil','play','pluc',
    'port','prox','qtek','qwap','sage','sams','s any','sch-','sec-','send',
    'seri','sgh-','shar','sie-','siem','smal','smar','sony ','sph-','symb',
    't-mo','teli','tim-','tosh','tsm-','upg1','upsi','vk-v','voda',' w3c ',
    'wap-','wapa','wapi','wapp','wapr','webc','winw','winw','xda','xda-');
if(isset($a[ substr (@$_SERVER['HTTP_USER_AGENT'],0,4)])) return true;
}

$GLOBALS['mob']=IsMobileDevice(); 

и далее — в любом месте сайта (на странице или в темплейте) мы можем использовать:

if ($GLOBALS['mob']) ....

Но есть тонкость. При кешировании эта проверка может быть неверной. Это надо учитывать…