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.

 

 

Komentáře jsou uzavřeny. Díky za pochopení.