2015-04-20 3 views
1

У меня есть функция, которая хорошо работает, но мне нужно немного ее расширить, а im не программист.Найти мобильного браузера по функции

Теперь он может хорошо обнаруживать ios, android и web одновременно перенаправляются на одну страницу как для веб-сайта, так и для Android.

Поставленная цель, чтобы перенаправить ИОС на страницу 1, Android на странице 2 и веб-зева на странице 3.

function find_mobile_browser() { 
    if(preg_match('/(iphone|ipad|ipod)/i', $_SERVER['HTTP_USER_AGENT'])) { 
     return true; 
    } else { 
     return false; 
    } 
} 

Вызов заключается в следующем:

<?php $mobile_browser = find_mobile_browser(); 
         if($mobile_browser) { 
         include("ios.php"); /* if mobile browser detected, do this */ 
         } else { 
         include("android_and_web.php"); /* else do this */ 
         } 
         ?> 

Можете ли вы мне помочь распространить этот фрагмент кода, чтобы обнаружить его так, что вызов может это:

<?php $mobile_browser = find_mobile_browser(); 
         if($mobile_browser) { 
         include("ios.php"); /* if ios detected, do this */ 
         } else { 
         include("android.php"); /* if android detected, do this */ 
         } 

         } else { 
         include("web_os.php"); /* if web-os detected, do this */ 
         } 
         ?> 

Я думаю, что его не идеальный способ обнаружения мобильных устройств, но есть ли лучший?

Спасибо, Оруэлл

После ваших хороших ответов, я объясню, может быть лучше.

Ответ на «заголовок» полезен для меня, но я не программист, поэтому я не могу заставить его работать, как я хочу его использовать. Переадресация работает хорошо, но мне не нужны перенаправления, мне нужно включить. Я хочу включить в некоторые мои шаблоны ios/android/web небольшой фрагмент текста (php-файлы).

Функция работает хорошо, но мой вызов не показал никакого результата. Здесь ho я пытаюсь назвать функцию:

<?php 
    $mobile_browser = find_mobile_browser(); 

    if($mobile_browser == 'ios') 
    { 
     include("ios.php"); 
    } 
    elseif ($mobile_browser == 'android') 
    { 
     include("android.php"); 
    } 
    else 
    { 
     /* if no mobile os detected, include "web.php" */ 
    } 

?> 

Надеюсь, что теперь яснее, и вы не должны расстраиваться.

Спасибо заранее, Оруэлл

Спасибо за ваши ответы greatfull, - я получил сейчас :))

Приветствия, Оруэлл

+0

Возможный дубликат [Обнаружение мобильных устройств b rower] (http://stackoverflow.com/questions/6524301/detect-mobile-browser) –

+1

Во всяком случае, include ("web_os.php"); никогда не будет вызван с двойного другого. – sitilge

+0

Пойдите с http://mobiledetect.net/ и используйте код в своем ответе. –

ответ

1

Для того, чтобы перенаправить вы можете использовать header

header('Location:'.$your_url); 

Таким образом, код станет чем-то вроде (в зависимости от значения $mobile_browser)

function find_mobile_browser() 
{ 
    if(preg_match('/(iphone|ipad|ipod)/i', $_SERVER['HTTP_USER_AGENT'])) 
    { 
     return 'ios'; 
    } 
    elseif (preg_match('/(android)/i', $_SERVER['HTTP_USER_AGENT'])) 
    { 
     return 'android'; 
    } 
    else 
    { 
     return false; 
    } 
} 

<?php 
    $mobile_browser = find_mobile_browser(); 

    $ios_url = 'http://www.example.com'; 
    $android_url = 'http://www.example.com'; 
    $web_url = 'http://www.example.com'; 

    if($mobile_browser == 'ios') 
    { 
     header('Location:'.$ios_url); 
     exit; 
    } 
    elseif ($mobile_browser == 'android') 
    { 
     header('Location:'.$android_url); 
     exit; 
    } 
    else 
    { 
     header('Location:'.$web_url); 
     exit; 
    } 

?>

+0

Does 'find_mobile_browser()' return 'android' или' ios'? Я так не думаю. Кроме того, почему вы «включаете» файлы, если после использования «Местоположение:»? Извините, но ваш код не имеет никакого смысла. –

+0

@PedroLobito Хорошо, см. Обновление сейчас: добавлен расширенный фрагмент и удалены. – sitilge

1

Используйте класс Mobile-Detect PHP.

Пример:

<?php 
require_once 'Mobile_Detect.php'; 
$detect = new Mobile_Detect; 

if($detect->isAndroidOS()) { 
include("android.php"); 
}elseif($detect->isiOS()) { 
include("ios.php"); 
}else($detect->iswebOS()) { 
include("web_os.php"); 
} 
?> 
0

Вы можете использовать PHP класс с именем: Mobile Detect

Ссылка для скачивания файла: https://github.com/serbanghita/Mobile-Detect/archive/2.8.12.zip

Вот пример сниппет использовать его, вы можете настроить это зависит от ваших потребностей :

<?php 
require_once 'Mobile_Detect.php'; 
$detect = new Mobile_Detect; 

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

} 

// Any tablet device. 
if($detect->isTablet()){ 

} 

// Exclude tablets. 
if($detect->isMobile() && !$detect->isTablet()){ 

} 

// Check for a specific platform with the help of the magic methods: 
if($detect->isiOS()){ 

} 

if($detect->isAndroidOS()){ 

} 

$detect->is('Chrome'); 
$detect->is('iOS'); 
$detect->is('UC Browser'); 

$userAgents = array(
'Mozilla/5.0 (Linux; Android 4.0.4; Desire HD Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19', 
'BlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103', 
); 

foreach($userAgents as $userAgent){ 

    $detect->setUserAgent($userAgent); 
    $isMobile = $detect->isMobile(); 
    $isTablet = $detect->isTablet(); 

} 

$detect->version('iPad'); // 4.3 (float) 
$detect->version('iPhone') // 3.1 (float) 
$detect->version('Android'); // 2.1 (float) 
$detect->version('Opera Mini'); // 5.0 (float) 

?> 
+1

Это класс, а не библиотека;) –

+1

Спасибо, что упомянули .. :) @PedroLobito –