245 votes

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

Quelle est la façon la plus simple de savoir si un utilisateur est à l'aide d'un appareil mobile à parcourir mon site à l'aide de PHP?

J'ai rencontré un grand nombre de classes que vous pouvez utiliser, mais je m'attendais à une simple condition si! Est-il un moyen pour que je puisse faire cela?

Merci à tous pour toute l'aide

373voto

NAVEED Points 16576

Voici une source:

Code:

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

?>

127voto

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 mots que l'on trouve uniquement dans les appareils mobiles des chaînes user-agent après des centaines de tests. 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 ils 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!

9voto

Sergej Jevsejev Points 532

7voto

Oli Charlesworth Points 148744

Il n'y a aucun moyen fiable. Vous pouvez peut-être regarder la chaîne de l'agent utilisateur, mais cela peut être usurpée, ou omis. Sinon, vous pouvez utiliser un GeoIP service pour la recherche de l'adresse IP du client, mais encore une fois, cela peut être facilement contournée.

2voto

Mike Points 68

PHP dispositif de détection de 51Degrees.com fait exactement ce que vous voulez - détecte les périphériques mobiles et les différentes propriétés associées avec les périphériques détectés. Il est simple à utiliser et ne nécessite aucun entretien. Est fait en 4 étapes faciles:

  1. Télécharger le fichier Zip à partir de http://sourceforge.net/projects/fiftyone/.
  2. Décompressez le fichier dans un répertoire de votre serveur PHP.
  3. Puis ajoutez le code suivant à votre page PHP:


    require_once 'path/to/core/51Degrees.php';
    require_once 'path/to/core/51Degrees_usage.php';
Tous les périphériques disponibles les informations seront contenues dans $_51d tableau:


    if ($_51d['IsMobile'] == TRUE)
    {
    //Start coding for a mobile device here.
    }

51Degrees appareil détecteur de ne pas utiliser les expressions régulières pour les détections. Seulement des parties importantes de des en-têtes HTTP sont utilisés pour faire correspondre les appareils. Ce qui rend cette solution la plus rapide (5 000 000 détections par seconde sur du matériel peu performant) et plus précis (99.97% de précision) que des centaines de nouveaux périphériques sont ajoutés à la base de données hebdomadaire (périphérique pris en charge types de consoles, Téléviseurs intelligents, liseuses, tablettes et bien plus encore).

Le logiciel est open source distribué sous Licence Publique de Mozilla 2 et compatible avec les commerciaux et les projets open source. Comme un bonus 51Degrees solution contient également une complémentaire PHP image de l'optimiseur qui peut redimensionner automatiquement les images pour les appareils mobiles.

Par défaut 51Degrees PHP détecteur de périphérique utilise Lite fichier de données qui est gratuit et contient plus de 30000 périphériques et de 50 propriétés pour chaque appareil. Lite fichier est mis à jour une fois tous les 3 mois. Si vous voulez avoir un plus haut niveau de détails de la demande d'appareils mobiles, puis de la Prime et de l'Entreprise fichiers de données sont disponibles. Premium contient bien plus de 70000 appareils et 100 propriétés pour chaque appareil avec des mises à jour hebdomadaires. L'entreprise est mis à jour quotidiennement et contient plus de 150000 appareils avec 150 propriétés de chacun.

Liste complète des propriétés de l'appareil.
Comparer les fichiers de données.

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