Forum Clubic

[php]reconnaître un client PDA - pouvoir diférencier les CSS en intranet

Saluton,
Je suis en train de concevoir une appli AMP intranet pour un réseau WIFI sur lequel les utilisateurs pourront se connecter soit à partir de PC ou de PDA (ACER N50 Premium).
Seulement non seulement je souhaiterais leur fournir un rendu différent mais aussi masquer certaines options des menus aux PDA.
Je pense que $_SERVER[‘HTTP_USER_AGENT’] devrait me permettre de détecter les PDA, mais je n’ai aucune certitude.
Quelqu’un a-t-il des infos à ce sujet ?
Merci.

Un pote a fait un site qui reconnait les pda, j’essayerai de lui demander, et je reposte :slight_smile:

si tu veux mettre un css différent pour les pdas tu fais :
<link rel="stylesheet" type="text/css" media="screen" href="screen.css" />
<link rel="stylesheet" type="text/css" media="handheld" href="pda.css" />

"screen
Intended primarily for color computer screens.
handheld
Intended for handheld devices (typically small screen, monochrome, limited bandwidth)."
http://www.w3.org/TR/REC-CSS2/media.html

Voilà qui résoud le problème de la mise en page, mais pas celui des menus dédiés à ce type de média. Sauf à créer une class avec display: none dans le css des handled devices…à méditer.
En tout état de cause, je te remercie beaucoup pour cet important élément de réponse.

peut etre en se basant sur la version du navigateur ?

Bonsoir :jap:

Je n’ai malheureusement de solution à t’apporter, seulement pour confirmer l’existence d’une solution pour différencier un PDA d’une autre plateforme.

Je suis utilisateur d’un iPAQ et connecté en WiFi dans PIE en allant sur google.fr, le moteur de recherche redirige automatiquement ves la version optimisée PDA google.fr/pda. C’est qu’il y a forcément une solution quand à savoir laquelle :??:

Bonjour,

Ne connaissant pas exactement la solution miracle.

Pour moi, trois solutions s’offrent à toi :

  • Soit tu test directement en demandant qu’une personne se connecte avec un PDA sur ton site afin de voir le type de naviguateur que te retourne cette variable d’environnement PHP :
$_SERVER['HTTP_USER_AGENT'];

Tu compare avec celle d’un naviguateur tel que Internet Explorer, Firefox, ou Gecko. Théoriquement ce ne sera pas la même. A partir de là il faudrait des tests avec d’autres types de PDA et vérifié ce qui est retourné. A partir de là il te suffit de les répertoriés et d’utiliser une condition pour afficher ou non une condition.

  • La deuxième solution serait de faire le contraire. Tu répertorie les types de naviguateurs retournés par la variable précédente. Tu en fait une liste et il te suffit de faire une condition pour que si $HTTP_USER_AGENT ne retourne pas un type connu alors tu suppose que c’est un PDA qui se connecte à ton site. C’est tout de même un peu aléatoire.

Exemple :

http://zdnet.allhtml.com/php/php471.php

  • La dernière technique semble pour moi la meilleur. Tu test non pas le naviguateur mais le type de système d’exploitation installé sur la machine client. la technique utilisée est un peu la même que celle précédente. Mais me semble mieux :

http://php.developpez.com/faq/?page=concepts#concepts_typeos

@+

C’est exactement à cela que je pense depuis le début, détecter l’OS via $_SERVER[‘HTTP_USER_AGENT’], mais j’ai des doutes sur la fiabilité de cette info.
Je ne peux rien tester pour l’instant car je n’en suis qu’à la phase conceptuelle du projet et je n’ai pas encore le petit réseau WIFI de test ni le PDA, j’essaye juste d’anticiper la problématique.
En tout cas, merci à vous tous pour le coup demain.
Amike.

MDR, le coup de main, aujourd’hui.

http://pear.php.net/package/Net_UserAgent_Mobile

Un tardif merci à Dinofly pour ce lien…dont je ne sais cependant trop que faire.

J’ai téléchargé cette bibliothèque sous Linux, j’en ai extrait le contenu (un ensemble de scripts php (essentiellement des définitions de constantes et de $_GLOBALS) et qqes fichiers XML.
Le tout semble requérir PEAR (require ‘PEAR.php’:wink: et définir une classe Net_UserAgent_Mobile aux méthodes pour moi ésotériques.

J’ai essayé de me plonger dans la documentation en ligne, très professionelle, et exclusivement en anglais, mais ça me dépasse.

En outre cette bibliothèque ne semble pas concerner les PDA, mais les téléphones mobiles et, qui plus est, uniquement les modèles japonais.

Dommage.

Pour installer PEAR sous Linux le mieux est de passer par le gestionnaire de paquets de ta distribution.
Par exemple sous Debian je crois que c’est le paquet “php-pear”.
Ensuite le programme pear te permettra de tout installer sans avoir à télécharger les classes PEAR à la main.

Je n’ai personnellement jamais utilisé Net_UserAgent_Mobile et appremment ça concerne effectivement surtout les téléphones japonais. Mais tu peux toujours ajouter tes propres fonctions aux classes qui sont fournies, sur le même modèle que celles qui existent déjà.

Crée déjà une page PHP toute simple qui fait un print_r( $_SERVER ) pour voir quelles sont les entêtes envoyées par le navigateur que tu veux reconnaître. Ensuite il suffira d’ajouter une fonction qui teste ces entêtes dans les classes de Net_UserAgent_Mobile. Mais c’est peut-être sortir l’artillerie lourde pour pas grand chose, tout dépend de ce que tu voudras faire par la suite avec ton site (ajout d’autres navigateurs…).

Merci encore, Dinofly,
Comme tu le dis, c’est peut-être prendre un canon pour écraser une mouche.

D’autant que (THINK DIFFERENT) le réseau WIFI requiert une authentification par adresse MAC/IP, donc les IP des pdas devront être recensées.
Or l’IP de la machine cliente est accessible par $_SERVER[‘REMOTE_ADDR’].
Mais bon, c’est en forgeant…
Dankon al vi, Dinofly.