@naveed Apenas um aviso, isso não parece mais estar funcionando. Testado no IOS 8.1 usando o navegador móvel do Chrome. Justin está trabalhando para mim.
James
15
@ kavior.com Sim, pode ser falsificado, mas devemos permitir que as pessoas falsifiquem se assim o desejarem ... porque essa seria sua intenção, por que impedir que as pessoas façam o que querem especificamente (por exemplo, carregue a versão para desktop por algum motivo em particular) )?
Nick Steele
4
agora esta resposta é tão obsoleta. existem muitos falsos positivos, o safari no OSX é detectado como móvel, o Chrome no OSX detectado como móvel.
DevZer0
3
@ DevZer0: Ok. Você pode adicionar a solução mais recente no final desta resposta.
O código detecta um usuário com base na sequência de agente do usuário preg_match (), palavras que são encontradas apenas em sequências de agente do usuário de dispositivos móveis após centenas de testes. Ele tem 100% de precisão em todos os dispositivos móveis atuais e atualmente estou atualizando-o para oferecer suporte a mais dispositivos móveis à medida que eles são lançados. O código é chamado isMobile e é o seguinte:
function isMobile(){return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);}
Você pode usá-lo assim:
// Use the functionif(isMobile()){// Do something for only mobile users}else{// Do something for only desktop users}
Para redirecionar um usuário para o seu site móvel, eu faria o seguinte:
// Create the function, so you can use itfunction isMobile(){return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);}// If the user is on a mobile device, redirect themif(isMobile()){
header("Location: http://m.yoursite.com/");}
Deixe-me saber se você tiver alguma dúvida e boa sorte!
@RobertHarvey - estou confuso. todos estão perguntando basicamente a mesma coisa, então o que devo fazer, além de responder à pergunta? Diga-lhes para usar outra coisa a cada vez? Eu sou novo aqui, então não tenho certeza se devo vincular à primeira resposta?
Justin Docanto
Esta palavra-chave "tablet" está a criar-me um problema em alguns IE8 (PC) cabeçalhos que têm "Tablet PC 2.0" em resposta
Mladen Janjetovic
Por que usar uma função para armazenar a condição em vez de uma variável simples e fazer if($isMobile) {}?
precisa saber é
10
Aqui está a versão atualizada: return preg_match("/(android|webos|avantgo|iphone|ipad|ipod|blackberry|iemobile|bolt|boost|cricket|docomo|fone|hiptop|mini|opera mini|kitkat|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);Esta é uma coleção de alguns novos dispositivos.
//include the file
require_once 'Mobile_Detect.php';
$detect =newMobile_Detect;// Any mobile device (phones or tablets).if( $detect->isMobile()){//do some code}// Any tablet device.if( $detect->isTablet()){//do some code}
function isMobileDev(){if(isset($_SERVER['HTTP_USER_AGENT'])and!empty($_SERVER['HTTP_USER_AGENT'])){
$user_ag = $_SERVER['HTTP_USER_AGENT'];if(preg_match('/(Mobile|Android|Tablet|GoBrowser|[0-9]x[0-9]*|uZardWeb\/|Mini|Doris\/|Skyfire\/|iPhone|Fennec\/|Maemo|Iris\/|CLDC\-|Mobi\/)/uis',$user_ag)){returntrue;}else{returnfalse;};}else{returnfalse;};}
Fiquei me perguntando, até agora, por que alguém não havia postado uma pequena alteração na resposta aceita para o uso de implode(), a fim de ter uma melhor legibilidade do código. Então aqui vai:
Não existe uma maneira confiável. Talvez você possa observar a sequência de agente do usuário , mas isso pode ser falsificado ou omitido. Como alternativa, você pode usar um serviço GeoIP para pesquisar o endereço IP do cliente, mas, novamente, isso pode ser facilmente contornado.
O GeoIP não ajudaria. Mesmo que você possa determinar que o IP deles pertence a uma rede móvel, eles podem estar vinculando a conexão a um computador desktop. Se não é uma rede móvel, você realmente não tem nada: todos os dispositivos podem se conectar através de Wi-Fi. Além disso, você tem o problema de manter um banco de dados global de intervalos de IP. Usando o agente do usuário, mesmo que não seja perfeito, eu assumiria que é muito mais confiável. Não é realmente um problema de segurança veicular o conteúdo errado do navegador, então quem se importa? Se alguém está falsificando a UA, provavelmente já sabe no que está se metendo.
<?php//include file
include_once 'user_agent.php';//create an instance of UserAgent class
$ua =newUserAgent();//if site is accessed from mobile, then redirect to the mobile site.if($ua->is_mobile()){
header("Location:http://m.codexworld.com");exit;}?>
<?php //-- Very simple way
$useragent = $_SERVER['HTTP_USER_AGENT'];
$iPod = stripos($useragent,"iPod");
$iPad = stripos($useragent,"iPad");
$iPhone = stripos($useragent,"iPhone");
$Android = stripos($useragent,"Android");
$iOS = stripos($useragent,"iOS");//-- You can add billion devices
$DEVICE =($iPod||$iPad||$iPhone||$Android||$iOS);if(!$DEVICE){?><!-- What you want for all non-mobile devices. Anything with all HTML, PHP, CSS, even full page codes--><?php }else{?><!-- What you want for all mobile devices. Anything with all HTML, PHP, CSS, even full page codes --><?php }?>
A detecção de dispositivos PHP no 51Degrees.com faz exatamente o que você deseja - detecta dispositivos móveis e várias propriedades associadas aos dispositivos detectados. É simples de usar e não requer manutenção. A configuração é feita em 4 etapas fáceis:
Faça o download do arquivo Zip em http://sourceforge.net/projects/fiftyone/.
Descompacte o arquivo em um diretório em seu servidor PHP.
Em seguida, adicione o seguinte código à sua página PHP:
Todas as informações disponíveis sobre o dispositivo estarão contidas na matriz $ _51d:
if($_51d['IsMobile']){//Start coding for a mobile device here.}
51O detector de dispositivo de graus não usa expressões regulares para detecções. Somente partes importantes dos cabeçalhos HTTP são usadas para corresponder aos dispositivos. O que torna esta solução a mais rápida (5 000 000 detecções por segundo em hardware medíocre) e a mais precisa (99,97% de precisão), à medida que centenas de novos dispositivos são adicionados semanalmente ao banco de dados (os tipos de dispositivos suportados incluem consoles, TVs inteligentes, leitores eletrônicos, comprimidos e muito mais).
O software é de código aberto distribuído sob a Mozilla Public License 2 e compatível com projetos comerciais e de código aberto. Como solução adicional, a 51Degrees também contém um otimizador de imagem PHP complementar que pode redimensionar automaticamente as imagens para dispositivos móveis.
Por padrão, o detector de dispositivo PHP 51Degrees usa o arquivo de dados Lite, que é gratuito e contém mais de 30000 dispositivos e 50 propriedades para cada dispositivo. O arquivo Lite é atualizado uma vez a cada 3 meses. Se você deseja obter um nível mais alto de detalhes sobre a solicitação de dispositivos móveis, os arquivos de dados Premium e Enterprise estão disponíveis. O Premium contém mais de 70000 dispositivos e 100 propriedades para cada dispositivo com atualizações semanais. O Enterprise é atualizado diariamente e contém mais de 150000 dispositivos com 150 propriedades para cada um.
esse software é irritante. sem suporte para o IIS, sem biblioteca somente php.
Tschallacka
2
Você também pode usar uma API de terceiros para fazer a detecção do dispositivo por meio da cadeia de caracteres do agente do usuário. Um desses serviços é www.useragentinfo.co . Basta se inscrever e obter seu token de API e abaixo é como você obtém as informações do dispositivo via PHP:
Isso funciona ! E este script simples parece um dos melhores que encontrei: (até agora) é o único script que encontrei que pode detectar meu tablet ASUS ZenPad! Mas NOTA: eles mudaram o $ url para https://useragentinfo.co/device , consulte a página https://useragentinfo.co : fornece código bash para executar curl, mas na verdade você pode substituí-lo pelas suas linhas PHP. No entanto, você deve omitir a linha "Authorization: Token .." porque parece não ser mais necessária (e não vejo como obter essa chave de API).
Roelof Berkepeis
Não obtendo resposta. apenas mostrando {} que eu acho que o token da API é necessário, você pode me orientar como gerar o token.
Mohd Bashir
$ data = array ('user_agent' => $ useragent); Deve ser como: $ data = array ('useragent' => $ useragent);
Caso você se preocupe com o tamanho da tela, é possível armazenar a largura e a altura da tela como valores de cookie, se ainda não existirem, e fazer o redirecionamento de página própria.
Agora você tem cookies no lado do cliente e do servidor e pode usá-lo para determinar telefones celulares, tablets e outros dispositivos
Aqui está um exemplo rápido de como você pode fazer isso com JavaScript. Aviso! [este código contém pseudo código].
Respostas:
Aqui está uma fonte:
Código:
fonte
Eu escrevi este script para detectar um navegador móvel em PHP.
O código detecta um usuário com base na sequência de agente do usuário preg_match (), palavras que são encontradas apenas em sequências de agente do usuário de dispositivos móveis após centenas de testes. Ele tem 100% de precisão em todos os dispositivos móveis atuais e atualmente estou atualizando-o para oferecer suporte a mais dispositivos móveis à medida que eles são lançados. O código é chamado isMobile e é o seguinte:
Você pode usá-lo assim:
Para redirecionar um usuário para o seu site móvel, eu faria o seguinte:
Deixe-me saber se você tiver alguma dúvida e boa sorte!
fonte
if($isMobile) {}
?return preg_match("/(android|webos|avantgo|iphone|ipad|ipod|blackberry|iemobile|bolt|boost|cricket|docomo|fone|hiptop|mini|opera mini|kitkat|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);
Esta é uma coleção de alguns novos dispositivos./\b(?:a(?:ndroid|vantgo)|b(?:lackberry|olt|o?ost)|cricket|docomo|hiptop|i(?:emobile|p[ao]d)|kitkat|m(?:ini|obi)|palm|(?:i|smart|windows )phone|symbian|up\.(?:browser|link)|tablet(?: browser| pc)|(?:hp-|rim |sony )tablet|w(?:ebos|indows ce|os))/i
Eu achei o mobile detect muito simples e você pode usar a
isMobile()
função :)fonte
Simplesmente você pode seguir o link. é muito simples e muito fácil de usar. Eu estou usando isso. Está funcionando bem.
http://mobiledetect.net/
use assim
fonte
fonte
Fiquei me perguntando, até agora, por que alguém não havia postado uma pequena alteração na resposta aceita para o uso de
implode()
, a fim de ter uma melhor legibilidade do código. Então aqui vai:fonte
Não existe uma maneira confiável. Talvez você possa observar a sequência de agente do usuário , mas isso pode ser falsificado ou omitido. Como alternativa, você pode usar um serviço GeoIP para pesquisar o endereço IP do cliente, mas, novamente, isso pode ser facilmente contornado.
fonte
Você só precisa incluir o
user_agent.php
arquivo que pode ser encontrado na página Detecção de dispositivos móveis na página PHP e usar o código a seguir.fonte
fonte
A detecção de dispositivos PHP no 51Degrees.com faz exatamente o que você deseja - detecta dispositivos móveis e várias propriedades associadas aos dispositivos detectados. É simples de usar e não requer manutenção. A configuração é feita em 4 etapas fáceis:
51O detector de dispositivo de graus não usa expressões regulares para detecções. Somente partes importantes dos cabeçalhos HTTP são usadas para corresponder aos dispositivos. O que torna esta solução a mais rápida (5 000 000 detecções por segundo em hardware medíocre) e a mais precisa (99,97% de precisão), à medida que centenas de novos dispositivos são adicionados semanalmente ao banco de dados (os tipos de dispositivos suportados incluem consoles, TVs inteligentes, leitores eletrônicos, comprimidos e muito mais).
O software é de código aberto distribuído sob a Mozilla Public License 2 e compatível com projetos comerciais e de código aberto. Como solução adicional, a 51Degrees também contém um otimizador de imagem PHP complementar que pode redimensionar automaticamente as imagens para dispositivos móveis.
Por padrão, o detector de dispositivo PHP 51Degrees usa o arquivo de dados Lite, que é gratuito e contém mais de 30000 dispositivos e 50 propriedades para cada dispositivo. O arquivo Lite é atualizado uma vez a cada 3 meses. Se você deseja obter um nível mais alto de detalhes sobre a solicitação de dispositivos móveis, os arquivos de dados Premium e Enterprise estão disponíveis. O Premium contém mais de 70000 dispositivos e 100 propriedades para cada dispositivo com atualizações semanais. O Enterprise é atualizado diariamente e contém mais de 150000 dispositivos com 150 propriedades para cada um.
Lista completa de propriedades do dispositivo .
Compare arquivos de dados .
fonte
Você também pode usar uma API de terceiros para fazer a detecção do dispositivo por meio da cadeia de caracteres do agente do usuário. Um desses serviços é www.useragentinfo.co . Basta se inscrever e obter seu token de API e abaixo é como você obtém as informações do dispositivo via PHP:
E aqui está a resposta de amostra se o visitante estiver usando um iPhone:
fonte
fonte
Caso você se preocupe com o tamanho da tela, é possível armazenar a largura e a altura da tela como valores de cookie, se ainda não existirem, e fazer o redirecionamento de página própria.
Agora você tem cookies no lado do cliente e do servidor e pode usá-lo para determinar telefones celulares, tablets e outros dispositivos
Aqui está um exemplo rápido de como você pode fazer isso com JavaScript. Aviso! [este código contém pseudo código].
fonte
fonte