Oprava TMEP 4.2 – přesměrování na mobilní verzi
Náhodou sem včera narazil na chybku v aplikace TMEP, jenž postihuje jak originální aplikaci, tak verzi pro GIOM 3000.
Jednoduše nefunguje automatické přesměrování uživatele, jenž přistupuje z mobilního zařízení, na mobilní verzi aplikace.
Je to způsobeno jednak chybějícím konfiguračním parametrem v souboru nastaveni.php, tak nevhodnou konstrukcí vlastního přesměrování, jenž PHP aktuální verze prostě „nežere“ 🙂
Připravil sem pro Vás následující kousky kódu, pro opravu souboru nastaveni.php a index.php. Oprava je již zaintegrována do *.zip souboru, který je zde na blogu ke stažení.
Na konec nastaveni.php je třeba přidat následující, aby se přesměrování povolilo :
$presmerovavatMobily = true; // CZ: Presmerovavat na mobilni verzi ? // EN: Redirect to mobile version ?
Soubor index.php je třeba kolem řádku 34-tého nahradit :
if (($ipod !== false || $iphone !== false || $android !== false) && $presmerovavatMobily == 1 && $_GET['nemobile'] == 0) { Header('Location: mobile.php', 301, true); exit(); }
… za opravenou a rozšířenou verzi :
// rozpoznani o jake jde zarizeni ... verze 2.0 (240912) $aMobile = array("iphone", "ipod", "ipad", "android", "htc", "samsung", "nokia", "symbian", "blackberry", "iemobile", "opera mini", "htc", "samsung", "silk", "kindle", "hp-tablet", "hpwos", "j2me/midp"); for ($i = 0; $i < count($aMobile); $i++) { if (stripos($_SERVER['HTTP_USER_AGENT'], $aMobile[$i]) !== false && $presmerovavatMobily == true && $_GET['nemobile'] == 0) { $aDir = explode("/", __DIR__); $sRedirect = "Location: http://".$_SERVER["SERVER_NAME"]."/".$aDir[count($aDir)-1]."/mobile.php"; Header($sRedirect, TRUE, 301); exit(); } } // rozpoznani zarizeni - konec
Nyní by už přesměrování mělo makat 🙂 Pokud máte mobil jiné platformy než Apple a přesměrování stále nefunguje, dejte mi vědet, či zkuste zjistit co prohlížeč vrací v poli $_SERVER[‚HTTP_USER_AGENT‘] … Díky !
Aktualizace : Našel sem na netu seznam User-Agent-IDs pro další platformy/prohlížeče na mobilních zařízeních, tedy sem udělal další edit/opravu archivu ke stažení a kódu zde na stránce. Navíc sem našel chybu v jpgraphs (jde o definici cesty k fontům, lze nastavit dle vašeho prostředí), oprava je taktéž v archivu a zde:
Soubor skripty/jpgraph/jpgraph.php – řádek 202 :
//define('TTF_DIR','/usr/share/fonts/truetype/'); define('TTF_DIR','./fonts/');
… řádek 222 :
//define('MBTTF_DIR','/usr/share/fonts/truetype/'); define('MBTTF_DIR','./fonts/');
Aktualizace 25.10.2012 a 26.10.2012 : Odstranil sem z výčtu uset-agent tagů „trident“, což mělo totiž za následek, že mobilní verzi webu viděli i lidi co stále používají InternetExplorer a zároveň sem část kódu odpovědnou za tuto funkci přesunul do souboru skripty/fce.php … Archiv byl upraven taky. Dne 26.10. sem celé přesměrování kapku přepsal znovu a je otestováno, že funguje bez chyb – v případě, že nějakou chybu najdete, tak pište 🙂 A archiv je aktualizován taky, jako vždy.