Thiết bị di động ngày càng phổ biến, Internet không còn là độc quyền của PC và các trình duyệt web trên PC nữa mà đã trở nên dễ dàng hơn bao giờ hết với các trình duyệt web di động. Bài viết này, NhanWeb chia sẻ với các bạn cách lập trình xác định thiết bị đầu cuối (thiết bị duyệt web) để tìm kiếm phiên bản thích hợp cho thiết bị này.
Giả sử, bạn nhận thấy website của bạn ngày càng phát triển và bạn có 2 phiên bản: một phiên bản cho PC và một phiên bản giành cho điện thoại di động. Trong bài viết này, mình sử dụng 2 phiên bản của website TimViecNhanh.COM là :
- http://mobi.timviecnhanh.com/
- http://www.timviecnhanh.com/
Vấn đề đặt ra ở đây là làm thế nào để khi người dùng truy cập vào website TimViecNhanh.COM qua mobile, hệ thống sẽ có thể xác định được thiết bị truy cập là mobile và tự động chuyển người dùng về trang mobi.timviecnhanh.com ?
Code toàn bộ trước hen, giải thích sau :
[php] <?//****************************************************************************************
// Vui long khong xoa dong nay
// Xac dinh thiet bi di dong va PC
// Author: Nguyen Duy Nhan
// Website: wwww.nhanweb.com – www.vnwebmaster.com
// Email: contact@vnwebmaster.com
//****************************************************************************************/
//Configuration
global $userBrowser;
global $userAccept;
//Mang xac dinh cac thiet bi di dong
$mobiidentity = array(‘wapbrowser’,’up.browser’,’up/4′,’mib’,’cellphone’,’go.web’,
‘nokia’,’panasonic’,’wap’,’wml-browser’,’wml’,’samsung’
);
//Mang xac dinh trinh duyet web thong thuong
$pcidentity = array(
‘mozilla’,’gecko’,’opera’,’omniweb’,’msie’,’konqueror’,’safari’,
‘netpositive’ ,’lynx’ ,’elinks’ ,’links’ ,’w3m’ ,’webtv’ ,’amaya’ ,
‘dillo’ ,’ibrowse’ ,’icab’ ,’crazy browser’ ,’internet explorer’
);
$pspidentity= array(‘PlayStation Portable’);
$iPhoneidentity= array(‘iphone’);
$linkformobile = "http://mobi.timviecnhanh.com";
$linkforweb = "http://timviecnhanh.com";
// chuyen AGENT ve lower case
$userBrowser = strtolower($_SERVER[‘HTTP_USER_AGENT’]);
// chuyen HTTP_ACCEPT ve lower case
$userAccept= strtolower($_SERVER[‘HTTP_ACCEPT’]);
if (stristr($userAccept,’wml’)) {
$driver = "WML";
}else{
//check cho thiet bi di dong thong thuong
if(check_identity($userBrowser, $mobiidentity))
$driver = "WML";
elseif(check_identity($userBrowser, $pcidentity))
$driver = "PC";
elseif(check_identity($userBrowser, $pspidentity))
$driver = "WML";// Co the define lai 1 gia tri khac de sau nay xu ly
elseif(check_identity($userBrowser, $iPhoneidentity))
$driver = "WML";// Co the define lai 1 gia tri khac de sau nay xu ly
else //Khong tim thay thi mac dinh la thiet bi di dong luon ^_^
$driver = "WML";
}
//Ok ! Sau khi xac dinh thiet bi xong roi thi redirect ve cho thich hop cua no
switch ($driver){
case ‘PC’:
header("Location: ".$linkforweb);
exit;
case ‘WML’:
header("Location: ".$linkformobile);
exit;
}
function check_identity($userBrowser, $identity){
foreach($identity as $value){
if(stristr($userBrowser, $value)){
//Tim thay browser
return true;
}
}
//Khong tim thay
return false;
}
?>
[/php]
Lý giải một tí
Trong đoạn code trên chúng ta sẽ dựa vào 2 giá trị được server trả về là HTTP_USER_AGENT và HTTP_ACCEPT để tìm hiểu browser mà người dùng duyệt web. Qua đó, xác định được các browser nào là browser giành cho di động cũng như loại browser của nó. Dựa vào đó, chuyển hướng đến trang thích hợp (hoặc bạn có thể làm gì cũng được sau khi xác định được loại thiết bị đúng không ?)
Trong đoạn code trên, mình check tổng cộng 4 loại thiết bị bao gồm Mobile, Computer, Play Station, Iphone. Nếu bạn không thích check cái nào thì bỏ bớt nếu thích.
Hàm check_identity() được sử dụng để tìm kiếm trong chuỗi $_SERVER[‘HTTP_USER_AGENT’] các giá trị được nói đến trong mảng từ khóa giúp xác định thiết bị. Nếu từ khóa tồn tại trong chuỗi này thì thiết bị được định dạng tương ứng là thiết bị thuộc loại đó. Mảng từ khóa này các bạn có thể bổ sung tùy ý.
Phần còn lại chắc không cần phải giải thích nữa >:D