msgbartop
SQL Server, Dicas, Rails, Mobile
msgbarbottom

09 Apr 09 Mobile – Detectando se esta em um aparelho móvel

Fala pessoal,

Achei um codigo tanto em PHP quanto em ASP para detectar se você esta em um aparelho móvel.

Segue:

ASP

<%
Option Explicit
Dim user_agent, mobile_browser, Regex, match, mobile_agents, mobile_ua, i, size

user_agent = Request.ServerVariables("HTTP_USER_AGENT")

mobile_browser = 0

Set Regex = New RegExp
With Regex
   .Pattern = "(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|windows ce|pda|mobile|mini|palm)"
   .IgnoreCase = True
   .Global = True
End With

match = Regex.Test(user_agent)

If match Then mobile_browser = mobile_browser+1

If InStr(Request.ServerVariables("HTTP_ACCEPT"), "application/vnd.wap.xhtml+xml") 
Or Not IsEmpty(Request.ServerVariables("HTTP_X_PROFILE"))
Or Not IsEmpty(Request.ServerVariables("HTTP_PROFILE")) Then
   mobile_browser = mobile_browser+1
end If

mobile_agents = Array("w3c ", "acs-", "alav", "alca", "amoi", "audi", "avan", "benq", "bird", 
"blac", "blaz", "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", "mits", "mmef", "mobi", "mot-", "moto", "mwbp", "nec-", "newt", "noki", "oper", 
"palm", "pana", "pant", "phil", "play", "port", "prox", "qwap", "sage", "sams", "sany", "sch-",
 "sec-", "send", "seri", "sgh-", "shar", "sie-", "siem", "smal", "smar", "sony", "sph-", "symb",
"t-mo", "teli", "tim-", "tosh", "tsm-", "upg1", "upsi", "vk-v", "voda", "wap-", "wapa", "wapi",
"wapp", "wapr", "webc", "winw", "winw", "xda", "xda-")
size = Ubound(mobile_agents)
mobile_ua = LCase(Left(user_agent, 4))

For i=0 To size
   If mobile_agents(i) = mobile_ua Then
      mobile_browser = mobile_browser+1
      Exit For
   End If
Next

If mobile_browser>0 Then
   Response.Write("Mobile!")
Else
   Response.Write("Not mobile!")
End If

%>

PHP
<?php

$mobile_browser = '0';

if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone)/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
    $mobile_browser++;
}

if((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml')>0) or
 ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))) {
    $mobile_browser++;
}    

$mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4));
$mobile_agents = array(
    'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',
    'blaz','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','mits','mmef','mobi','mot-','moto','mwbp','nec-',
    'newt','noki','oper','palm','pana','pant','phil','play','port','prox',
    'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',
    'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',
    'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',
    'wapr','webc','winw','winw','xda','xda-');

if(in_array($mobile_ua,$mobile_agents)) {
    $mobile_browser++;
}

if (strpos(strtolower($_SERVER['ALL_HTTP']),'OperaMini')>0) {
    $mobile_browser++;
}

if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'windows')>0) {
    $mobile_browser=0;
}

if($mobile_browser>0) {
   // do something
}
else {
   // do something else
}   

?>

Os dois código podem ser achados aqui:
http://mobiforge.com/developing/story/lightweight-device-detection-php
http://mobiforge.com/developing/story/lightweight-device-detection-asp
Abraço

Tags: , ,

Reader's Comments

  1. |

    Ola gostei muito do seu site e do que vc tem escrito sobre mobile.Eu estou tentando sozinho fazer uma versão mobile para o meu site e queria muito saber como redirecionar automaticamente como diz os códigos acima.Eu entendo muito pouco essa linguagem, como faço para adaptar esse código ao meu site?
    obrigado!!

    Matheus

  2. |

    Olá Matheus,

    Qual a linguagem de programação você usa pra desenvolver seu site mesmo? Asp.NET, ASP, PHP…?

    Agora em relação ao código, é você copiar e colar la e nesta linha, fazer do jeito abaixo:
    ASP
    If mobile_browser > 0 Then
    Response.redirect “http://m.seusite.com.br”
    End If

    Espero ter ajudado, senão me mande um email a gente resolve por la.

    Abraço,
    Marcelo

  3. |

    Marcelo,

    valeu ai pela dica.Como eu havia dito eu n sei absolutamente nada desse tipo de linguagem mas estou me esforçando!!

    Eu colei o codigo na minha pagina index que é acessada pelo desktop mesmo e fiz a modificação que vc me falou, e infelismente n deu certo n sie o que pode ter dado de errado!

    Marcelo se nã´for pedir d+ vc pode me da um e-mail seu pra poder conversar melhor com vc e se possivel te mandar o código do site que eu to fazendo pra vc da uma olhada!??se n for incomodo é claro!

    Qualquer coisa ai o meu msn é
    matheus_g_faria@hotmail.com

    Valeu abraço

  4. |

    Marcelo,

    Encontrei um bug no código asp e não consigo resolver. Segue abaixo:

    O código funciona para ie, chrome, mozilla, safari. Mas eu testei usando opera 9.8 e o código interpreta como mobile e então redireiona para o site wap.

    Eu verifiquei no código asp:
    mobile_agents = Array(…”oper”…

    O navegador no micro usando opera, retorna a mesma identificação para mobile: oper.

    Como posso resolver este problema, pois os usuários opera no micro tem que ver a página normal e os opera mobile tem que ser redirecionados.

    grato

Leave a Comment

Spam Protection by WP-SpamFree