Categorizado | Artigos, Mobile, PHP

Identificando qual celular está acessando seu site

Postado em 19 April 2010 por Bruno PorKaria

Depois de ler na php|architect - março 2010 o artigo Advanced Mobile Device Detection with Tera-WURFL por Steve Kamerman fiquei animado em pegar parte do que eu escrevi na apostila que usei no mini-curso da PHP Conference Brazil 2009 e adicionar um exemplo utilizando o Tera-WURFL , mostrar um exemplo “faça você mesmo” e uma simples utilização da IsMobile para identificação dos celulares (nokia, android, iphone e etc) e dispositivos móveis (iPad) mais populares.

Se você usa PHP, você é uma pessoa mais feliz, por isso vai conseguir resolver esse problema bem fácil. O grande segredo fica todo em torno da variável pré-definida $_SERVER, mas precisamente a $_SERVER['HTTP_USER_AGENT'] com o valor dela nós vamos obter o USER AGENT.

Chega de bla bla bla e vamos aos exemplos.

Faça você mesmo

<?php
$user_agent = $_SERVER['HTTP_USER_AGENT'];
// ou use esse valor aqui para testar
// $user_agent = 'Mozilla/5.0 (Linux; U; Android 1.6; en-it; HTC_TATTOO_A3288 Build/DRC79) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1 ';
 
if (preg_match("/HTC_TATTOO_A3288/i",$user_agent) == 1) {
    echo 'Bem-vindo dono de um HTC TATTOO A3288';
} else {
    echo 'Bem-vindo amigo, também não tenho dinheiro para ter um HTC TATTOO com Android';
}
?>

Você pode ficar alternando o valor da string $user_agent para testar, daí pra frente é com você, ou você faz a sua própria solução ou pode utilizar alguma pronta e adaptar para a sua necessidade.

Simples

require_once "caminho/ate/a/classe/ismobile.class.php";
 
$agents_test = array("Nokia6600/1.0 (4.09.1) SymbianOS/7.0s Series60/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0",       
        "Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10");
 
$ismobiuser = new isMobile($agents_test[rand(0,1)]);
 
if ($ismobiuser->CheckMobile()) {
    $mobileDevice = $ismobiuser -> GetMobileDevice();
 
    switch ($mobileDevice) {
        case "Nokia":
            echo "User Agent do seu Nokia é " . $ismobiuser -> GetUserAgent();
            break;
        case "iPad":
            echo "uUuUui iPad";
            break;
    }
}
?>

Esse foi um exemplo utilizando a classe IsMobile, para identificar se o usuário está acessando o seu site de um iPad ou um celular Nokia. Por ser uma classe fica mais fácil e organizando de você implementar em um site/sistema que já esteja funcionando, também já vem um array populado com os principais dispositivos móveis do mercado, uma interface para implementar log e agora seguindo o Coding Standards da PEAR .

Avançado

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
require_once("TeraWurfl.php");
$wurflObj = new TeraWurfl();
$wurflObj->GetDeviceCapabilitiesFromAgent("Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3");
?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.1//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />        
        <title>PorKaria Mobile</title>
        <?php
        $max_width = $wurflObj->capabilities['display']['max_image_width'];
        $max_height = $wurflObj->capabilities['display']['max_image_height'];
 
        if ($max_width >= 320 && $max_height >= 360) {
            ?>
        <link rel="stylesheet" type="text/css" media="all" href="mobile_iphone.css" />
            <?php
        } else {
            ?>
        <link rel="stylesheet" type="text/css" media="all" href="mobile.css" />
            <?php
        }
        ?>
    </head>
    <body>
        ...
    </body>
</html>

Nesse exemplo nós identificamos que o celular é um iPhone, alteramos o CSS do site de acordo com o tamanho do display do dispositivo. Para instalar e configurar o Tera-Wurfl acesse o guia que está no site do projeto.

O que torna essa identificação avançada, é a possibilidade é saber todo os recursos que o dispositivo móvel tem, como tamanho da tela, se tem suporte a bluetooth, mp3, acesso via wi-fi, modelo do browser e por aí vai. Sem falar que ele importa todos os dados do arquivo xml WURFL para uma base de dados mySQL, facilitando muito o acesso aos dados e rapidez no retorno das informações.

Então…

Esses exemplos mostram que a identificação do dispositivo móvel é apenas o inicio no Desenvolvimento Mobile Web, pois a partir dele você consegue informações para aí sim construir um serviço totalmente voltado para mobile. E como informação vale ouro, pensa na quantidade de serviços customizados que você pode criar sabendo de todos os recursos e limitações do seu usuário.

Posts Relacionados

  1. Descobrindo o User Agent do browser usando JavaScript
  2. O projeto WURFL
  3. Projeto PHP Mobile
  4. Testando o seu site mobile usando o Opera Mobile Emulator
  5. O que eu preciso para testar um Qr Code ?

2 Comments For This Post

  1. Guilherme Says:

    Bruno, como faço apenas para saber se quem está acessando meu site, está em um celular ou tablet, independente do modelo… ;)

    Obrigado!

    [Reply]

    admin Reply:

    Opa

    Tenta o projeto, Tera-Wurfl, talvez ele tenha uma opção para filtrar por tipos de dispositivos móveis.

    [Reply]

  2. Anderson Says:

    Em busca de adaptações de layout para o mobile site do meu TCC da facul encontrei seus artigos.
    Poderia me dizer se através da implementação utilizando “TeraWurfl.php”, para descobrir a resolução do viewport é necessário
    fazer alguma modificação no servidor Apache ou no PHP? Pois no servidor que sub-loco online isso não seria possível.

    Consegui descobrir o viewport através de um JavaScript simples, porém no Samsung Omnia com IE não foi possível,
    pois ele identifica como 1024×768, e eu preciso algo em torno de 300px. Fiz mais ou menos assim:


    document.write(”);

    //onde viewportwidth é identificada através do script

    Por favor, me indique algum artigo ou dê alguma dica para que eu possa contornar o problema, visando adaptar o meu layout
    identificando a largura de cada dispositivo.

    Obs.: os elementos HTML são fluidos (100% de largura), portanto se adaptam de acordo com a metatag.
    O site que estou desenvolvendo é: http://www.studioaweb.com.br/mobile (em fase de testes por enquanto)

    [Reply]

2 Trackbacks For This Post

  1. Ivo Nascimento » php5minutes 12 – php mobile – Entrevista com Bruno Fernandes (porkaria) – parte A Says:

    [...] Identificar qual celular está acessando o seu site: http://www.porkaria.com.br/2010/04/19/identificando-qual-celular-esta-acessando-site/ [...]

  2. Gerando QR-code com PHP | PHP Mobile - Ferramentas, artigos e notícias sobre o desenvolvimento Mobile Says:

    [...] Posts Compactar e Criptografar javascript usando o php, Adicionando o cake no PATH do Ubuntu, Identificando qual celular está acessando seu site Autor: phpmobilenews Categoria: Artigos, Notícias Últimos posts: Gerando QR-code com [...]

Leave a Reply

Andando por aí...