34 votes

Détecter le navigateur mobile

Double Possible:
Façon la plus simple pour détecter un périphérique mobile

J'ai un site et je veux détecter le navigateur utilisé et les rediriger. J'ai un indice de php et le code doit être en php. J'ai trouvé de nombreux sites, mais ils ne fonctionnent pas ou ne sont pas en mesure de détecter de nombreux navigateurs mobiles. Connaissez-vous un bon code ou des tutoriels qui peuvent détecter de nombreux navigateurs mobiles?

55voto

iamandrus Points 985

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';
}
?>
 

28voto

Justin DoCanto Points 271

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 de l'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 à l'appui de plus d'appareils mobiles comme elles viennent. Le code est appelé isMobile et est 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/");

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

4voto

cweiske Points 13722

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X