Cách đơn giản nhất để phát hiện thiết bị di động trong PHP


184

Cách đơn giản nhất để biết người dùng có đang sử dụng thiết bị di động để duyệt trang web của tôi bằng PHP không?

Tôi đã đi qua nhiều lớp mà bạn có thể sử dụng nhưng tôi đã hy vọng đơn giản nếu có điều kiện!

Có cách nào tôi có thể làm điều này?


Bạn có thể đặt một javascript vào trang kiểm tra độ phân giải màn hình, nhưng đó sẽ là phía máy khách: howtocreate.co.uk/tutorials/javascript/browserwindow
thejh

Đây là giải pháp của bạn: code.google.com/p/php-mobile-detect2
Sergej Jevsejev

Kiểm tra kích thước màn hình những ngày này là khó khăn vì các thiết bị võng mạc.
Martin James

Câu trả lời:


311

Đây là một nguồn:

Mã số:

<?php

$useragent=$_SERVER['HTTP_USER_AGENT'];

if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($useragent,0,4)))

header('Location: http://detectmobilebrowser.com/mobile');

?>

8
HTTP_USER_AGENT có thể bị làm giả không?
datan.io

2
@naveed Chỉ cần một cái đầu lên, điều này dường như không còn hoạt động. Đã thử nghiệm trong iOS 8.1 bằng trình duyệt di động của Chrome. Justin đang làm việc cho tôi mặc dù.
James

14
@ kavior.com Có, nó có thể bị làm giả, nhưng chúng ta nên cho phép mọi người giả mạo nếu họ muốn ... bởi vì đó là ý định của họ, tại sao lại ngăn mọi người thực hiện những gì họ muốn (cụ thể là tải phiên bản máy tính để bàn vì một số lý do cụ thể )?
Nick Steele

4
Câu trả lời này bây giờ đã quá lỗi thời. Có nhiều thông tin sai, safari trên OSX được phát hiện là điện thoại di động, Chrome trên OSX được phát hiện là Di động.
DevZer0

3
@ DevZer0: Ok. Bạn có thể thêm giải pháp mới nhất vào cuối câu trả lời này.
Naveed

91

Tôi đã viết kịch bản này để phát hiện một trình duyệt di động trong PHP.

Mã phát hiện người dùng dựa trên chuỗi tác nhân người dùng bằng các từ preg_match () ing chỉ được tìm thấy trong các chuỗi tác nhân người dùng của thiết bị di động sau hàng trăm thử nghiệm. Nó có độ chính xác 100% trên tất cả các thiết bị di động hiện tại và tôi hiện đang cập nhật nó để hỗ trợ nhiều thiết bị di động hơn khi chúng ra mắt. Mã được gọi là isMobile và như sau:

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"]);
}

Bạn có thể sử dụng nó như thế này:

// Use the function
if(isMobile()){
    // Do something for only mobile users
}
else {
    // Do something for only desktop users
}

Để chuyển hướng người dùng đến trang web di động của bạn, tôi sẽ làm điều này:

// Create the function, so you can use it
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"]);
}
// If the user is on a mobile device, redirect them
if(isMobile()){
    header("Location: http://m.yoursite.com/");
}

Hãy cho tôi biết nếu bạn có bất kỳ câu hỏi và chúc may mắn!


4
@RobertHarvey - tôi bối rối. tất cả họ đều hỏi về cơ bản giống nhau, vậy tôi phải làm gì, ngoài việc trả lời câu hỏi? bảo họ dùng cái gì khác mỗi lần? Tôi mới ở đây vì vậy tôi không chắc chắn nếu tôi phải liên kết đến câu trả lời đầu tiên?
Justin DoCanto

Từ khóa "máy tính bảng" này đang tạo cho tôi một vấn đề trên một số tiêu đề IE8 (PC) có phản hồi "Tablet PC 2.0"
Mladen Janjetovic

Tại sao sử dụng một hàm để lưu trữ điều kiện thay vì một biến đơn giản và làm gì if($isMobile) {}?
D4V1D

10
Đây là phiên bản cập nhật: 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"]);Đây là bộ sưu tập của một vài thiết bị mới.
Ivijan Stefan Stipić



7

Đơn giản là bạn có thể theo liên kết. nó rất đơn giản và rất dễ sử dụng. Tôi đang sử dụng này. Nó hoạt động tốt.

http://mobiledetect.net/

sử dụng như thế này

//include the file
require_once 'Mobile_Detect.php';
$detect = new Mobile_Detect;

// Any mobile device (phones or tablets).
if ( $detect->isMobile() ) {
 //do some code
}

// Any tablet device.
if( $detect->isTablet() ){
 //do some code
}

7
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)){
          return true;
       }else{
          return false;
       };
    }else{
       return false;    
    };
}

7

Tôi đã tự hỏi, cho đến bây giờ, tại sao một người nào đó đã không đăng một chút thay đổi của câu trả lời được chấp nhận cho việc sử dụng implode()để có thể đọc mã tốt hơn. Vì vậy, ở đây nó đi:

<?php
$uaFull = strtolower($_SERVER['HTTP_USER_AGENT']);
$uaStart = substr($uaFull, 0, 4);

$uaPhone = [
    '(android|bb\d+|meego).+mobile',
    'avantgo',
    'bada\/',
    'blackberry',
    'blazer',
    'compal',
    'elaine',
    'fennec',
    'hiptop',
    'iemobile',
    'ip(hone|od)',
    'iris',
    'kindle',
    'lge ',
    'maemo',
    'midp',
    'mmp',
    'mobile.+firefox',
    'netfront',
    'opera m(ob|in)i',
    'palm( os)?',
    'phone',
    'p(ixi|re)\/',
    'plucker',
    'pocket',
    'psp',
    'series(4|6)0',
    'symbian',
    'treo',
    'up\.(browser|link)',
    'vodafone',
    'wap',
    'windows ce',
    'xda',
    'xiino'
];

$uaMobile = [
    '1207', 
    '6310', 
    '6590', 
    '3gso', 
    '4thp', 
    '50[1-6]i', 
    '770s', 
    '802s', 
    'a wa', 
    'abac|ac(er|oo|s\-)', 
    'ai(ko|rn)', 
    'al(av|ca|co)', 
    'amoi', 
    'an(ex|ny|yw)', 
    'aptu', 
    'ar(ch|go)', 
    'as(te|us)', 
    'attw', 
    'au(di|\-m|r |s )', 
    'avan', 
    'be(ck|ll|nq)', 
    'bi(lb|rd)', 
    'bl(ac|az)', 
    'br(e|v)w', 
    'bumb', 
    'bw\-(n|u)', 
    'c55\/', 
    'capi', 
    'ccwa', 
    'cdm\-', 
    'cell', 
    'chtm', 
    'cldc', 
    'cmd\-', 
    'co(mp|nd)', 
    'craw', 
    'da(it|ll|ng)', 
    'dbte', 
    'dc\-s', 
    'devi', 
    'dica', 
    'dmob', 
    'do(c|p)o', 
    'ds(12|\-d)', 
    'el(49|ai)', 
    'em(l2|ul)', 
    'er(ic|k0)', 
    'esl8', 
    'ez([4-7]0|os|wa|ze)', 
    'fetc', 
    'fly(\-|_)', 
    'g1 u', 
    'g560', 
    'gene', 
    'gf\-5', 
    'g\-mo', 
    'go(\.w|od)', 
    'gr(ad|un)', 
    'haie', 
    'hcit', 
    'hd\-(m|p|t)', 
    'hei\-', 
    'hi(pt|ta)', 
    'hp( i|ip)', 
    'hs\-c', 
    'ht(c(\-| |_|a|g|p|s|t)|tp)', 
    'hu(aw|tc)', 
    'i\-(20|go|ma)', 
    'i230', 
    'iac( |\-|\/)', 
    'ibro', 
    'idea', 
    'ig01', 
    'ikom', 
    'im1k', 
    'inno', 
    'ipaq', 
    'iris', 
    'ja(t|v)a', 
    'jbro', 
    'jemu', 
    'jigs', 
    'kddi', 
    'keji', 
    'kgt( |\/)', 
    'klon', 
    'kpt ', 
    'kwc\-', 
    'kyo(c|k)', 
    'le(no|xi)', 
    'lg( g|\/(k|l|u)|50|54|\-[a-w])', 
    'libw', 
    'lynx', 
    'm1\-w', 
    'm3ga', 
    'm50\/', 
    'ma(te|ui|xo)', 
    'mc(01|21|ca)', 
    'm\-cr', 
    'me(rc|ri)', 
    'mi(o8|oa|ts)', 
    'mmef', 
    'mo(01|02|bi|de|do|t(\-| |o|v)|zz)', 
    'mt(50|p1|v )', 
    'mwbp', 
    'mywa', 
    'n10[0-2]', 
    'n20[2-3]', 
    'n30(0|2)', 
    'n50(0|2|5)', 
    'n7(0(0|1)|10)', 
    'ne((c|m)\-|on|tf|wf|wg|wt)', 
    'nok(6|i)', 
    'nzph', 
    'o2im', 
    'op(ti|wv)', 
    'oran', 
    'owg1', 
    'p800', 
    'pan(a|d|t)', 
    'pdxg', 
    'pg(13|\-([1-8]|c))', 
    'phil', 
    'pire', 
    'pl(ay|uc)', 
    'pn\-2', 
    'po(ck|rt|se)', 
    'prox', 
    'psio', 
    'pt\-g', 
    'qa\-a', 
    'qc(07|12|21|32|60|\-[2-7]|i\-)', 
    'qtek', 
    'r380', 
    'r600', 
    'raks', 
    'rim9', 
    'ro(ve|zo)', 
    's55\/', 
    'sa(ge|ma|mm|ms|ny|va)', 
    'sc(01|h\-|oo|p\-)', 
    'sdk\/', 
    'se(c(\-|0|1)|47|mc|nd|ri)', 
    'sgh\-', 
    'shar', 
    'sie(\-|m)', 
    'sk\-0', 
    'sl(45|id)', 
    'sm(al|ar|b3|it|t5)', 
    'so(ft|ny)', 
    'sp(01|h\-|v\-|v )', 
    'sy(01|mb)', 
    't2(18|50)', 
    't6(00|10|18)', 
    'ta(gt|lk)', 
    'tcl\-', 
    'tdg\-', 
    'tel(i|m)', 
    'tim\-', 
    't\-mo', 
    'to(pl|sh)', 
    'ts(70|m\-|m3|m5)', 
    'tx\-9', 
    'up(\.b|g1|si)', 
    'utst', 
    'v400', 
    'v750', 
    'veri', 
    'vi(rg|te)', 
    'vk(40|5[0-3]|\-v)', 
    'vm40', 
    'voda', 
    'vulc', 
    'vx(52|53|60|61|70|80|81|83|85|98)', 
    'w3c(\-| )', 
    'webc', 
    'whit', 
    'wi(g |nc|nw)', 
    'wmlb', 
    'wonu', 
    'x700', 
    'yas\-', 
    'your', 
    'zeto', 
    'zte\-'
];

$isPhone = preg_match('/' . implode($uaPhone, '|') . '/i', $uaFull);
$isMobile = preg_match('/' . implode($uaMobile, '|') . '/i', $uaStart);

if($isPhone || $isMobile) {
    // do something with that device
} else {
    // process normally
}

6

Không có cách nào đáng tin cậy. Bạn có thể có thể nhìn vào chuỗi tác nhân người dùng , nhưng điều này có thể bị giả mạo hoặc bị bỏ qua. Ngoài ra, bạn có thể sử dụng dịch vụ GeoIP để tra cứu địa chỉ IP của khách hàng, nhưng một lần nữa, điều này có thể dễ dàng bị phá vỡ.


4
GeoIP sẽ không thực sự giúp đỡ. Ngay cả khi bạn có thể xác định rằng IP của họ thuộc về mạng di động, họ vẫn có thể kết nối với máy tính để bàn. Nếu đó không phải là mạng di động, bạn thực sự không có gì là tất cả các thiết bị có thể kết nối thông qua Wi-Fi. Ngoài ra, bạn có vấn đề duy trì một cơ sở dữ liệu toàn cầu về dải IP. Sử dụng tác nhân người dùng, mặc dù nó không hoàn hảo, tôi cho rằng đáng tin cậy hơn nhiều. Nó không giống như nó thực sự là một vấn đề bảo mật để phục vụ nội dung trình duyệt sai, vậy ai quan tâm? Nếu ai đó giả mạo UA, họ có thể đã biết những gì họ đang mắc phải.
Mike

3

Bạn chỉ cần bao gồm user_agent.phptệp có thể được tìm thấy từ phát hiện thiết bị di động trong trang PHP và sử dụng mã sau đây.

<?php
//include file
include_once 'user_agent.php';

//create an instance of UserAgent class
$ua = new UserAgent();

//if site is accessed from mobile, then redirect to the mobile site.
if($ua->is_mobile()){
   header("Location:http://m.codexworld.com");
   exit;
}
?>

3
<?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 } ?>

2

Phát hiện thiết bị PHP từ 51Degrees.com thực hiện chính xác những gì bạn muốn - phát hiện các thiết bị di động và các thuộc tính khác nhau được liên kết với các thiết bị được phát hiện. Nó là đơn giản để sử dụng và không cần bảo trì. Thiết lập được thực hiện trong 4 bước dễ dàng:

  1. Tải xuống tệp Zip từ http://sourceforge.net/projects/fiftyone/.
  2. Giải nén tệp vào một thư mục trong máy chủ PHP của bạn.
  3. Sau đó thêm mã sau vào trang PHP của bạn:
  4. require_once 'path/to/core/51Degrees.php';
    require_once 'path/to/core/51Degrees_usage.php';
  5. Tất cả thông tin thiết bị khả dụng sẽ được chứa trong mảng $ _51d:
  6. if ($_51d['IsMobile'])
    {
        //Start coding for a mobile device here.
    }

Trình phát hiện thiết bị 51Degrees không sử dụng biểu thức chính quy để phát hiện. Chỉ các phần quan trọng của tiêu đề HTTP được sử dụng để khớp với các thiết bị. Điều này làm cho giải pháp này nhanh nhất (5 000 000 phát hiện mỗi giây trên phần cứng tầm thường) và chính xác nhất (độ chính xác 99,97%) khi hàng trăm thiết bị mới được thêm vào cơ sở dữ liệu hàng tuần (Các loại thiết bị được hỗ trợ bao gồm bảng điều khiển, TV thông minh, đầu đọc điện tử, máy tính bảng và nhiều hơn nữa).

Phần mềm là nguồn mở được phân phối theo Giấy phép Công cộng Mozilla 2 và tương thích với các dự án thương mại và nguồn mở. Là một giải pháp 51Degrees bổ sung cũng chứa trình tối ưu hóa hình ảnh PHP bổ sung có thể tự động thay đổi kích thước hình ảnh cho thiết bị di động.

Theo mặc định, trình phát hiện thiết bị PHP 51Degrees sử dụng tệp dữ liệu Lite miễn phí và chứa hơn 30000 thiết bị và 50 thuộc tính cho mỗi thiết bị. Tập tin Lite được cập nhật 3 tháng một lần. Nếu bạn muốn có mức độ chi tiết cao hơn về yêu cầu thiết bị di động, thì tệp dữ liệu Premium và Enterprise có sẵn. Premium chứa hơn 70000 thiết bị và 100 thuộc tính cho mỗi thiết bị với các bản cập nhật hàng tuần. Enterprise được cập nhật hàng ngày và chứa hơn 150000 thiết bị với 150 thuộc tính cho mỗi thiết bị.

Danh sách đầy đủ các thuộc tính thiết bị .
So sánh các tệp dữ liệu .


1
phần mềm đó gây phiền nhiễu. không hỗ trợ IIS, không có thư viện php.
Tschallacka

2

Bạn cũng có thể sử dụng api của bên thứ ba để phát hiện thiết bị thông qua chuỗi tác nhân người dùng. Một dịch vụ như vậy là www.useragentinfo.co . Chỉ cần đăng ký và nhận mã thông báo api của bạn và bên dưới là cách bạn nhận thông tin thiết bị qua PHP:

<?php
$useragent = $_SERVER['HTTP_USER_AGENT'];
// get api token at https://www.useragentinfo.co/
$token = "<api-token>";
$url = "https://www.useragentinfo.co/api/v1/device/";

$data = array('useragent' => $useragent);

$headers = array();
$headers[] = "Content-type: application/json";
$headers[] = "Authorization: Token " . $token;

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));

$json_response = curl_exec($curl);

$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);

if ($status != 200 ) {
    die("Error: call to URL $url failed with status $status, response $json_response, curl_error " . curl_error($curl) . ", curl_errno " . curl_errno($curl));
}

curl_close($curl);

echo $json_response;
?>

Và đây là phản hồi mẫu nếu khách truy cập đang sử dụng iPhone:

{
  "device_type":"SmartPhone",
  "browser_version":"5.1",
  "os":"iOS",
  "os_version":"5.1",
  "device_brand":"Apple",
  "bot":false,
  "browser":"Mobile Safari",
  "device_model":"iPhone"
}

Những công việc này ! Và tập lệnh đơn giản này có vẻ là một trong những tập lệnh hay nhất tôi tìm thấy: (cho đến bây giờ) nó là tập lệnh duy nhất tôi tìm thấy có thể phát hiện máy tính bảng ASUS ZenPad của tôi! Nhưng LƯU Ý: họ đã thay đổi $ url thành https://useragentinfo.co/device , xem trang của họ https://useragentinfo.co : nó cung cấp mã bash để thực thi curl nhưng thực sự bạn có thể thay thế bằng dòng PHP của mình. Tuy nhiên, bạn nên bỏ qua dòng "Ủy quyền: Mã thông báo .." vì có vẻ như không còn cần thiết nữa (và tôi thấy không có cách nào để lấy khóa API đó).
Roelof Berkepeis

Không nhận được phản hồi. chỉ hiển thị {} Tôi nghĩ rằng mã thông báo API là cần thiết, bạn có thể vui lòng hướng dẫn cho tôi cách tạo mã thông báo.
Mohd Bashir

$ data = mảng ('user_agent' => $ useragent); Nó phải là: $ data = mảng ('useragent' => $ useragent);
Mohd Bashir

Điều gì nếu tên miền không thể truy cập?
ENSATE

0
function isMobile(){
   if(defined(isMobile))return isMobile;
   @define(isMobile,(!($HUA=@trim(@$_SERVER['HTTP_USER_AGENT']))?0:
   (
      preg_match('/(android|bb\d+|meego).+mobile|silk|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i'
      ,$HUA)
   ||
      preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i'
      ,$HUA)
   )
   ));
}

echo isMobile()?1:0;
// OR
echo isMobile?1:0;

0

Trong trường hợp bạn quan tâm đến kích thước màn hình, bạn có thể lưu trữ chiều rộng và Chiều cao màn hình dưới dạng giá trị cookie nếu chúng chưa tồn tại và sau đó tự chuyển hướng trang.

Bây giờ bạn có cookie ở phía máy khách và máy chủ và có thể sử dụng nó để xác định điện thoại di động, máy tính bảng và các thiết bị khác

Dưới đây là một ví dụ nhanh về cách bạn có thể làm điều đó với JavaScript. Cảnh báo! [mã này chứa mã giả].

if (!getcookie("screen_size")) {
    var screen_width = screen.width;
    var screen_height = screen.height;
    setcookie("screen_size", screen_width+", " +screen_height);
    go2(geturl());
}

0
<?php
$useragent=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($useragent,0,4)))
{
    echo('This is mobile device');
}
else
{
   echo('This is Desktop/Laptop device');
}
?>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.