Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Rozpoznawanie przeglądarki która działa z telefonu czy zwykły PC
Forum PHP.pl > Forum > PHP
Ravik
Witam,

Nie mam zielonego pojęcia, jak rozpoznać czy użytkownik, który w tej chwili przegląda moją stronę korzysta z telefonu komórkowego, czy ze zwykłego PC.
Będę wdzięczny za wszelkiego rodzaju porady, czy linki, z których można coś wyciągnąć na ten temat.

Pozdrawiam,
Ravik
Crozin
O ile użytkownik sam Ci na tacy takiej informacji nie poda (w nagłówku USER_AGENT) nie będziesz w stanie tego rozpoznać. Jednak z reguły ów nagłówek jest przesyłany, więc można skorzystać z get_browser.
kalmaceta
j.w. + sprawdzać HTTP_ACCEPT - użytkownik bez trudu zmanipuluje te informacje, jeśli będzie widział w tym interes .
link do czegoś w php
Ravik
Niech wam Bóg w dzieciach wynagrodzi smile.gif
modern-web
Rzuć okiem tutaj: http://forum.dobreprogramy.pl/automatyczne...ra-t258637.html
A na dzieci jeszcze za wcześnie ;P

Pozdrawiam!
kiler129
Ja osobiście używam lekko zmodowanego kodu @up:

Kod
function isMobileBrowser() {
  //Improved code from http://mobiforge.com/developing/story/lightweight-device-detection-php
  $ua = strtolower(@$_SERVER['HTTP_USER_AGENT']);
  $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(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|android|ipad|iphone
|ipod|itv)/i', $ua)) return true; //General test
  if(substr_count(strtolower(@$_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') > 0 || isset($_SERVER['HTTP_X_WAP_PROFILE'])) return true; //WAP profile  
  if(in_array(substr($ua, 0, 4), $mobile_agents)) return true; //Found in UA strs
  if(strpos(strtolower(@$_SERVER['ALL_HTTP']),'OperaMini') > 0) return true; //Opera Mini

  return false;
}


p.s. Drogi moderatorze - użyję tagu /php/ gdy wreszcie przestaną być w nim parsowane emotyki oraz inne BBC!
ciekawskiii
To polecam
  1. $opera = $_SERVER['HTTP_X_OPERAMINI_PHONE_UA'];

Wyswietli model telefonu gdy ktos wejdzie z opery mini bo to
  1. $prz = $_SERVER['HTTP_USER_AGENT'];
w przypadku gdy ktos wejdzie z opery mini to modelu fona nie wyswietli, tyle ze to jest przydatne w fonach w javie, systemowe wyswietla normalnie chyba, juz sam nie pamietam jak to jest
Ravik
Dzięki za odpowiedzi.
Znalazłem parę przykładów takich skryptów i osobiście korzystam z tego. Wprowadziłem parę zmian w kodzie, gdyż kompletnie mi pewne rzeczy nie odpowiadały.

  1. <?php
  2.  
  3. $mobile_browser = '0';
  4. $ua=$_SERVER['HTTP_USER_AGENT'];
  5.  
  6. if(preg_match('/(up.browser|up.link|mmp|symbian|android|smartphone|midp|wap|mobi|mini|phone)/i',strtolower($_SERVER['HTTP_USER_AGENT']))){
  7. $mobile_browser++;
  8. }
  9.  
  10. if((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml')>0) or
  11. ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))){
  12. $mobile_browser++;
  13. }
  14.  
  15. $mobile_ua = strtolower(substr($ua,0,4));
  16. $mobile_agents = array(
  17. 'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',
  18. 'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','htc-','inno',
  19. 'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-','lg-l',
  20. 'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',
  21. 'newt','noki','palm','pana','pant','phil','play','port','prox',
  22. 'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',
  23. 'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',
  24. 'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',
  25. 'wapr','webc','winw','winw','haha.gifa','haha.gifa-','HTC_');
  26.  
  27. if(in_array($mobile_ua,$mobile_agents)){
  28. $mobile_browser++;
  29. }
  30.  
  31. if (strpos(strtolower($_SERVER['ALL_HTTP']),'operamini')>0) {
  32. $mobile_browser++;
  33. }
  34.  
  35. if($mobile_browser>0){
  36.  
  37. echo "Strona dla telefonu";
  38. } else {
  39. echo "Strona dla PC";
  40. }
  41.  
  42. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.