Page 1 sur 1

Appel d'une page PHP : récupérer l'OS

Posté : 11 mai 2009, 09:19
par Ben_06
Bonjour à tous,

Sur une page php classique, j'utilise la variable $_SERVER['HTTP_USER_AGENT'] pour récupérer l'OS de l'utilisateur.

Seulement, pour une page n'étant pas affichée dans un navigateur, mais appellée par un

Code : Tout sélectionner

GET http://monsite.com/getOS.php
ca ne fonctionne pas car pas de browser...

Connaissez vous un autre moyen de récupérer ces infos ?

Merci d'avance.

Posté : 11 mai 2009, 09:52
par thehawk
Pourquoi ne pas envoyer en paramètre de ta page getOs.php les variables serveur ? apres tout dépend de ta méthode d'appel de la page en question.



Bye Hawk

Posté : 11 mai 2009, 10:13
par Sékiltoyai
L'information contenue dans $_SERVER['HTTP_USER_AGENT'] est purement informative et n'a aucune valeur.
Dis nous déjà pourquoi est-ce que tu as besoin de connaître l'OS…

Posté : 11 mai 2009, 11:44
par Invité
merci pour vos réponses.

j'ai besoin de différencier les OS (et en particulier XP et vista) pour proposer un service différent derrière, qui n'a plus rien à voir avec le web.

La page en question est appellée en C++ sur la machine client, je pourrai récupérer l'os par ce biais, mais ca n'a pas l'air plus simple...

Posté : 11 mai 2009, 12:48
par Sékiltoyai
La page en question est appellée en C++ sur la machine client, je pourrai récupérer l'os par ce biais, mais ca n'a pas l'air plus simple...
Bah c'est peut être pas plus simple, mais au moins ça a le mérite de marcher, et d'être fiable.
Et puis un petit cours de protocole HTTP, le User Agent, il n'arrive pas au serveur par magie, il faut bien le générer. Et qui est ce qui le génère ? Le navigateur. Donc ton programme. Donc tu pourrais très bien récupérer l'OS par le User Agent, mais de toute façon il faudra au préalable que tu le récupères en C++…

Posté : 11 mai 2009, 22:52
par niuxe
Salut,

Il me vient une petite idée. Toujours de la même manière ($_SERVER['HTTP_USER_AGENT']), n'est il pas possible de récupérer cette donnée avant le passage en https ?

Posté : 11 mai 2009, 23:17
par Sékiltoyai
Développe…

Posté : 12 mai 2009, 22:02
par niuxe
Bonsoir,

Désolé pour cette réponse tardive et je ne sais pas si c'est possible. Toutefois, mon idée est que :

Si la page login est en http simple,
Au moment de l'identification, on capture l'os de la personne,
insertion de la donnée dans un cookie ou une variable de session ou une fiche temporaire d'une SGBDR ou etc.

Bonne soirée à vous

Posté : 12 mai 2009, 22:08
par Sékiltoyai
Si la page login est en http simple,
Au moment de l'identification, on capture l'os de la personne,
Oui mais comment ?
En quoi cela change le problème ?
Es-tu sûr d'avoir compris mon explication ?
Je te dis que dans tous les cas, pour que le site obtienne l'OS, il faut que le navigateur le lui envoie, donc que le navigateur le connaisse. Donc, si le navigateur est un programme maison, il faut que ton programme maison connaisse l'OS.

Posté : 12 mai 2009, 22:57
par niuxe
Bonsoir Sékiltoyai,

En utilisant la supergobale « $_SERVER['HTTP_USER_AGENT'] », cela me retourne ceci sur le poste où je suis (cyber) :
Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11 (.NET CLR 3.5.30729)
De mémoire, vista est Windows NT (6.quelquechose). Donc, le browser renseigne bien sur quel OS je suis.

Là, je viens de voir une fonction qui répond à la problèmatique ! Par contre, il y a une contrainte : get_browser()

Donc, cela donne ceci :

Code : Tout sélectionner

$navigateur = get_browser(null,true); echo $navigateur[3];
Bonne soirée :)

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 13 mai 2009, 07:50
par Sékiltoyai
Ok, donc tu n'as pas bien exposé ton problème ni répondu à mes questions, mais content que t'ai réussi…

Posté : 13 mai 2009, 22:44
par niuxe
Bonsoir Sékiltoyai,

Ce n'est pas moi qui ait posé la question au départ. J'ai juste participé pour aider Ben_06. Par contre, j'ai beau cherché, je ne comprend pas ce que tu veux me dire sachant que je ne connais pas du tout le C++. En se servant de « $_SERVER['HTTP_USER_AGENT'] », on obtient bien des informations. Pourquoi dis tu qu'elles n'ont aucune valeur ?

Bonne soirée à toi :)

Posté : 14 mai 2009, 01:34
par Sékiltoyai
Pourquoi dis tu qu'elles n'ont aucune valeur ?
Ai-je dit que cela n'avait aucune valeur ?

Tu as fait le test avec un navigateur. Ton navigateur a récupéré l'OS sur le système sur lequel il tourne, par une quelconque méthode, et il l'a envoyé au site, c'est pour cela que la variable est renseignée.
Dans le cas d'un navigateur fait maison, rien ne l'empèche d'envoyer aussi le système au site, mais il doit encore le récupérer.

Je n'ai rien dit d'autre que $_SERVER['HTTP_USER_AGENT'] c'est bien beau, mais c'est à la charge du navigateur de le générer, donc il n'y a aucun intérêt à l'utiliser pour substituer cette méthode à la récupération du système par le programme appelant, puisque dans tous les cas c'est au programme appelant de le générer.