Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Salve Imasters, venho a vocês trazer mais problemas :}
é o seguinte, gostaria de perguntar a vocês como que é feito a verificação se a pessoa está entrando no site por mobile ou por pc,
e como posso fazer isso? ou como posso procurar no google, porque não estou conseguindo especificar o que quero na busca do google e os resultados não é o esperado..
vo continuar tentando procurar aqui, desculpem postar antes de conseguir achar algo, mais talvez a minha dúvida possa vir a ser de alguem !
Abraços !
William, vi essa classe ela aborda diversos tipos de mobiles e browsers,
porem quando faço a verificação,
ele não retorna nada..
if( $mobi ){ // is mobile
echo "<script>window.location = 'http://google.com.br'</script>";
}
echo '<br>';
if( $bot ){ // is robot search engine
echo "<script>window.location = 'http://yahoo.com.br'</script>";
}
fiz um teste se fosse mobile iria redirecionar para o Google, se fosse pc era pra ir yahoo. porém não retorna nehum erro, nem nada..
eu estou aplicando isso errado?
e você acessou com oque ?
faz um
var_dump( $_SERVER['HTTP_USER_AGENT'] );e veja oque aparece.se o teu mobile não estiver previsto pela class, adicione lá.
William, achei um outro aqui funcinou.. testei desktop e iphone e ipad, porem ipad deu como desktop, vo ver se tem como ele ir pro mesmo de mobile,
<?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) {
echo "<script>window.location = 'http://google.com.br'</script>";
} echo "<script>window.location = 'http://yahoo.com.br'</script>";
}
?>vo fazer esse var_dump ae, ai depois posto resultado aqui..
usando o var_dump funcionou...
ai ja adicionei o ipad junto com iphone e ipod,
<?php
function getEnvs( $s_var ){
$rs = false;
if( @getenv( $s_var ) ){
$rs = strtolower( getenv( $s_var ) );
}else{
if( isset( $_SERVER[$s_var] ) ){
$rs = strtolower( $_SERVER[$s_var] );
}
}
return $rs;
}
class browse{
static $op;
static $ua;
static $ac;
static $ip;
function init( ){
self::$op = strtolower( getEnvs( 'HTTP_X_OPERAMINI_PHONE' ) );
self::$ua = strtolower( getEnvs( 'HTTP_USER_AGENT' ) );
self::$ac = strtolower( getEnvs( 'HTTP_ACCEPT' ) );
self::$ip = strtolower( getEnvs( 'REMOTE_ADDR' ) );
}
function isMobile( ){
$isMobile = false;
$op = self::$op;
$ua = self::$ua;
$ac = self::$ac;
$ip = self::$ip;
$isMobile = strpos($ac, 'application/vnd.wap.xhtml+xml') !== false
|| $op != ''
|| strpos($ua, 'sony') !== false
|| strpos($ua, 'symbian') !== false
|| strpos($ua, 'nokia') !== false
|| strpos($ua, 'samsung') !== false
|| strpos($ua, 'mobile') !== false
|| strpos($ua, 'windows ce') !== false
|| strpos($ua, 'epoc') !== false
|| strpos($ua, 'opera mini') !== false
|| strpos($ua, 'nitro') !== false
|| strpos($ua, 'j2me') !== false
|| strpos($ua, 'midp-') !== false
|| strpos($ua, 'cldc-') !== false
|| strpos($ua, 'netfront') !== false
|| strpos($ua, 'mot') !== false
|| strpos($ua, 'up.browser') !== false
|| strpos($ua, 'up.link') !== false
|| strpos($ua, 'audiovox') !== false
|| strpos($ua, 'blackberry') !== false
|| strpos($ua, 'ericsson,') !== false
|| strpos($ua, 'panasonic') !== false
|| strpos($ua, 'philips') !== false
|| strpos($ua, 'sanyo') !== false
|| strpos($ua, 'sharp') !== false
|| strpos($ua, 'sie-') !== false
|| strpos($ua, 'portalmmm') !== false
|| strpos($ua, 'blazer') !== false
|| strpos($ua, 'avantgo') !== false
|| strpos($ua, 'danger') !== false
|| strpos($ua, 'palm') !== false
|| strpos($ua, 'series60') !== false
|| strpos($ua, 'palmsource') !== false
|| strpos($ua, 'pocketpc') !== false
|| strpos($ua, 'smartphone') !== false
|| strpos($ua, 'rover') !== false
|| strpos($ua, 'ipaq') !== false
|| strpos($ua, 'au-mic,') !== false
|| strpos($ua, 'alcatel') !== false
|| strpos($ua, 'ericy') !== false
|| strpos($ua, 'up.link') !== false
|| strpos($ua, 'vodafone/') !== false
|| strpos($ua, 'wap1.') !== false
|| strpos($ua, 'iphone.') !== false
|| strpos($ua, 'ipod.') !== false
|| strpos($ua, 'ipad.') !== false
|| strpos($ua, 'wap1.') !== false
|| strpos($ua, 'wap2.') !== false;
return $isMobile;
}
function isBot( ){
$isBot = false;
$op = self::$op;
$ua = self::$ua;
$ac = self::$ac;
$ip = self::$ip;
$isBot = $ip == '66.249.65.39'
|| strpos($ua, 'googlebot') !== false
|| strpos($ua, 'mediapartners') !== false
|| strpos($ua, 'yahooysmcm') !== false
|| strpos($ua, 'baiduspider') !== false
|| strpos($ua, 'msnbot') !== false
|| strpos($ua, 'slurp') !== false
|| strpos($ua, 'ask') !== false
|| strpos($ua, 'teoma') !== false
|| strpos($ua, 'spider') !== false
|| strpos($ua, 'heritrix') !== false
|| strpos($ua, 'attentio') !== false
|| strpos($ua, 'twiceler') !== false
|| strpos($ua, 'irlbot') !== false
|| strpos($ua, 'fast crawler') !== false
|| strpos($ua, 'fastmobilecrawl') !== false
|| strpos($ua, 'jumpbot') !== false
|| strpos($ua, 'googlebot-mobile') !== false
|| strpos($ua, 'yahooseeker') !== false
|| strpos($ua, 'motionbot') !== false
|| strpos($ua, 'mediobot') !== false
|| strpos($ua, 'chtml generic') !== false
|| strpos($ua, 'nokia6230i/. fast crawler') !== false;
return $isBot;
}
}
browse::init();
$mobi = browse::isMobile();
$bot = browse::isBot();
var_dump( $_SERVER['HTTP_USER_AGENT'] );
if( $mobi ){ // is mobile
echo "<script>window.location = 'http://google.com.br'</script>";
}
echo '<br>';
if( $bot ){ // is robot search engine
echo "<script>window.location = 'http://yahoo.com.br'</script>";
}
?>
funcionar funcionou, porem não tenho um conhecimento grande encima disso, na sua opinião acha que assim já esta bom, ou dou uma pesquisada a mais
para dar uma melhorada? tipo adicionar mais coisas !
cara, tecnicamente está bom..
oque daria para melhorar, seria trocar essa string gigante de OUs, por um array... e ai testar com in_array() e tal...
mas não vejo grandes problemas.. essa área é complicada mesmo.. cada browser de cada mobile segue uma coisa..
pode remover o var_dump(), era só para identificar.
vi agora que não funciona.. no chrome no firefox e no ie, porem no safari funciona
var_dump retorna,
string(116) "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7"
não entendi cara.
chrome, firefox, ie e safari para mobile ??
não funciona oque ?
eu fiz 2 redirecionamentos, se for mobile = google se for desktop = yahoo
porem no ipad, usando o safari estava funcionando,
ai quando fui testar no desktop, nao funcionou !
mostre como você fez.
uma forma simples seria:
if( $mobi )
echo "<script>window.location.href = 'http://www.google.com.br'</script>";//caso mobile
else
echo "<script>window.location.href = 'http://www.yahoo.com.br'</script>";//caso contrário, desktop, robo...
se você não explicar oque tá fazendo, e nem mostrar oque fez, é impossível adivinhar.
sim é isso mesmo como está no codigo acima, desculpe se não me expressei direito,
não fiz esse if e else, fiz dois if.. igual estava no codigo original, só reutilizei,
antes não estava funcionando no ie, ff, e chrome, usando desktop, só no ipad e iphone que funcionava usando o safari.
ai fiz o seguinte
|| strpos($ua, 'explorer') !== false
|| strpos($ua, 'mozilla') !== false
|| strpos($ua, 'firefox') !== false
|| strpos($ua, 'chrome') !== false
dai funcionou perfeitamente, e pra redirecionar o iphone ipodtouch e ipad fiz o mesmo tambem..
|| strpos($ua, 'iphone') !== false
|| strpos($ua, 'ipad') !== false
|| strpos($ua, 'ipodtouch') !== false
só não testei no ipod ainda porque não esta aqui.. mas por enquanto esta rodando.. vou adicionar outros Smartphone,
um coisa interessante que não sabia, é que o ipad e considerado desktop no codigo, ai tive que jogar como mobile tambem..
quiserem testar esse é o link
é isso, Obrigado ! precisar estamos ai !
esse funciona bem:
http://forum.imasters.com.br/index.php?/topic/294934-deteccao-mobile/page__view__findpost__p__1078511