Détecter un mobile (redirection PHP)

Une version plus récente de ce script est disponible ici !

Télécharger la version 1.1

J’ai récemment entrepris de travailler sur un code de redirection côté serveur (PHP) détectant les périphériques mobiles. Ayant finalisé une version stable de ce code aujourd’hui, je vous l’offre gratuitement en téléchargement pour utilisation personnelle ou professionnelle.

Le code est basé sur une fonction semblable réalisée par Andy Moore, mais qui ne me plaisait pas du tout. (c’était assez peu flexible et passer les variables a la fonction était loin d’être très plaisant)

J’ai donc recodé le tout avec des « variable variable » et des tableaux. Résultat ? Un code moitié moins long et on ne passe désormais plus qu’un seul tableau en paramètre.

Je vous offre ce code gratuitement, libre à vous d'en faire ce que vous désirez !

Installation de base

L’utilisation est somme toute assez simple. Il faut tout d’abord intégrer le code (avec un require_once par exemple) en haut de sa page.

<?php  
    require_once('mobile_redirect.php');
?>

<!DOCTYPE html>
<html>

Notez qu’il est important de ne laisser aucun espace blanc entre le haut de la page et cette fonction, ou vous aurez une erreur PHP « header already sent ». Cette erreur empêchera toute redirection.

Ensuite, il vous suffira d’appeler la fonction et de lui passer un tableau en paramètre. Voici les deux clés du tableau très importante :

  1. mobileredirect : Ce paramètre peut prendre deux valeurs : false (par défaut; pas de redirection) et une url
  2. desktopredirect :Ce paramètre peut prendre deux valeurs : false (par défaut; pas de redirection) et une url
<?php

    require_once('mobile_redirect.php');

    mobile_redirect(array(
        "mobileredirect"=>"http://Mobile.com",
        "desktopredirect"=>"http://Desktop.com"
    ));

?>

Redirections par défaut

Voici le comportement par défaut des différents éléments :

iPhone, iPod, Androïd, Opera (appareil mobile), Blackberry, Palm OS, Windows phone, et les autres (appareils répondant à divers tests comment étant bien des mobiles - mais probablement pas des téléphones intelligents) seront renvoyés vers l'adresse mobile (mobileredirect)

iPad, et les ordinateurs de bureau ne seront pas redirigé. (sauf si évidemment "desktopredirect" est spécifié)

Modifier le comportement par défaut

Pour modifier le comportement par défaut, il suffit d'insérer les commandes au sein du tableau passé en paramètre à notre fonction.

Ainsi, pour ne pas rediriger un iPhone vers le site mobile, on écrira:

<?php

    require_once('mobile_redirect.php');

    mobile_redirect(array(
        "iphone"=>false
    ));

?>

 

Les valeurs possibles sont :

  1. iphone
  2. ipad
  3. ipod
  4. android
  5. opera
  6. blackberry
  7. palm
  8. windows
  9. others

Chacune de ces clés du tableau peut prendre trois valeurs:

  1. true : redirection vers l'adresse mobile
  2. false : redirection vers l'adresse desktop
  3. URI : Une adresse web débutant obligatoirement par le protocole http vers laquelle le mobile ciblé sera renvoyé

Par exemple, pour rediriger les iPhone et les Androïds vers deux adresses différentes, on écrira :

<?php

    require_once('mobile_redirect.php');

    mobile_redirect(array(
        "iphone"=>"http://adresse-iPhone.com/etc",
        "android"=>"http://adresse-Android.ca"
    ));

?>

Et ainsi de suite, l'ordre dans lequel les lignes du tableau sont entrés n'a pas d'importance.

Utilité d'une redirection pour téléphone Mobile

Avant de vous lancer dans l'utilisation de ce code pour créer des sites mobiles, j'aimerais vous rappeler que dans la majorité des cas, les media queries CSS3 (totalement compatible avec les smartphones du marché) apparaissent souvent comme une solution tout à fait satisfaisante à la présentation d'un site mobile, dans le cas de sites de contenu ou de sites vitrines. La solution des media queries vous évite d'avoir deux sites à gérer, et est beaucoup plus facile à mettre en place pour quiconque utilise les feuilles de style CSS avec soin et attention.

La redirection mobile apparaît toutefois nécessaire dans le cas de sites applicatifs, ou dans quelques autres cas plus particuliers.

Bonne chance dans votre projet.

 

Pour toute question sur le fonctionnement du code, ou si vous rencontrez un bug, n'hésitez pas à laisser un commentaire ou à me contacter !

 

Télécharger la version 1.1