web-dev-qa-db-fra.com

Détecter le navigateur mobile

Duplicata possible:
moyen le plus simple de détecter un appareil mobile

J'ai un site et je souhaite détecter le navigateur utilisé et les rediriger. J'ai un index php et le code doit être en php. J'ai trouvé de nombreux sites mais ils ne fonctionnent pas ou ne détectent pas beaucoup de navigateurs mobiles. Connaissez-vous un bon code ou des didacticiels capables de détecter de nombreux navigateurs mobiles?

34
Gromdroid

Demandez à mon code d'agent utilisateur:

<?php

/* USER-AGENTS
================================================== */
function check_user_agent ( $type = NULL ) {
        $user_agent = strtolower ( $_SERVER['HTTP_USER_AGENT'] );
        if ( $type == 'bot' ) {
                // matches popular bots
                if ( preg_match ( "/googlebot|adsbot|yahooseeker|yahoobot|msnbot|watchmouse|pingdom\.com|feedfetcher-google/", $user_agent ) ) {
                        return true;
                        // watchmouse|pingdom\.com are "uptime services"
                }
        } else if ( $type == 'browser' ) {
                // matches core browser types
                if ( preg_match ( "/mozilla\/|opera\//", $user_agent ) ) {
                        return true;
                }
        } else if ( $type == 'mobile' ) {
                // matches popular mobile devices that have small screens and/or touch inputs
                // mobile devices have regional trends; some of these will have varying popularity in Europe, Asia, and America
                // detailed demographics are unknown, and South America, the Pacific Islands, and Africa trends might not be represented, here
                if ( preg_match ( "/phone|iphone|iTouch|iPod|symbian|Android|htc_|htc-|palmos|blackberry|opera mini|iemobile|windows ce|nokia|fennec|hiptop|Kindle|mot |mot-|webos\/|samsung|sonyericsson|^sie-|nintendo/", $user_agent ) ) {
                        // these are the most common
                        return true;
                } else if ( preg_match ( "/mobile|pda;|avantgo|eudoraweb|minimo|netfront|brew|teleca|lg;|lge |wap;| wap /", $user_agent ) ) {
                        // these are less common, and might not be worth checking
                        return true;
                }
        }
        return false;
}

?>

Comment utiliser:

<?php
$ismobile = check_user_agent('mobile');
if($ismobile) {
return 'yes';
} else {
return 'no';
}
?>
55
iamandrus

J'ai écrit ce script pour détecter un navigateur mobile en PHP.

Le code détecte un utilisateur sur la base de la chaîne d'agent utilisateur par preg_match () ing. Il a une précision de 100% sur tous les appareils mobiles actuels et je suis en train de le mettre à jour pour prendre en charge plus d'appareils mobiles à leur sortie. Le code est appelé isMobile et se présente comme suit:

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

Vous pouvez l'utiliser comme ceci:

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

Pour rediriger un utilisateur vers votre site mobile, je ferais ceci:

// 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/");

Faites-moi savoir si vous avez des questions et bonne chance!

28
Justin DoCanto

Au travail, nous utilisons WURFL - il existe des millions de navigateurs différents, et vous feriez mieux de réutiliser le travail effectué par d'autres ayant de l'expérience à cet égard que de mettre en œuvre votre propre solution.

4
cweiske