2009-11-24 6 views
1

J'écris une application Web et j'aimerais savoir quel type de navigateur/système d'exploitation provient de la requête et personnaliser le contenu renvoyé en conséquence. Donc, si quelqu'un visite le site à partir d'un iPhone/Android, ils obtiennent une expérience plus simple, ou si c'est un ordinateur de bureau, ils obtiennent la version complète. Je vais prendre un chemin complètement différent, plutôt que d'essayer de mélanger le contenu ensemble.Modification du contenu Web en fonction du type de navigateur

Quelle est l'approche recommandée pour cela dans ASP.NET/IIS et PHP? Y at-il un seul endroit où je peux attraper les demandes HTTP entrantes, prendre une décision, puis rediriger? Ou est-ce généralement fait sur une page par cas? Des pièges que je devrais surveiller?

Modifier: Un bon point a été fait pour s'assurer qu'il existe un lien vers la version complète sur la version réduite. C'est un bon point, mais pose le problème qu'une fois que l'utilisateur fait ce choix, toutes les futures redirections doivent pointer vers la version complète. Je préférerais vraiment faire tout cela en un seul endroit.

Cheers,

Shane

+0

Veuillez vous assurer d'offrir aux utilisateurs le choix d'afficher la version complète si, pour une raison quelconque, la détection de votre navigateur échoue. –

+0

Bien sûr. En fait, cela soulève un autre point. Une fois que quelqu'un prend cette décision, toutes les demandes de ce navigateur doivent rediriger vers le site complet. Je me demande comment cela est fait. – Shane

Répondre

1

ASP.NET dispose d'un mécanisme de détection de navigateur intégré. Il est piloté par une collection entièrement extensible de fichiers XML (* .browser) qui contiennent des expressions régulières pour faire correspondre la chaîne User-Agent entrante et les propriétés associées pour les agents correspondants.

Vous pouvez accéder aux propriétés à partir de l'objet Request.Browser; Vous pouvez également marquer les propriétés de contrôle en fonction des spécificités du navigateur.

Il y a un tas d'informations sur le Web à ce sujet - je le couvre aussi en détail dans mon livre: Ultra-Fast ASP.NET.

+0

Intéressant. Cela ressemble à un moyen automatisé de redirection, mais comment gérez-vous la situation où un utilisateur a choisi d'afficher la version complète de la page? Maintenant, les demandes ne sont pas redirigées en fonction du type de navigateur, mais plutôt de la session. – Shane

+0

Dans .NET 3.5, il suffit d'avoir votre logique basée sur la propriété Request.Browser ou si un indicateur de niveau de session est défini. C'est un peu plus facile dans .NET 4.0, car ils ont ajouté la possibilité d'avoir un contrôle programmatique complet sur la façon dont le Browser est déterminé, plutôt que de l'utiliser uniquement avec la chaîne User-Agent et les expressions régulières. session vérifier la logique, puis peut-être encore utiliser des propriétés déclaratives dans votre balisage. – RickNZ

1

Pas une réponse directe, mais il vaut la peine de vérifier les types de médias CSS. Vous pouvez spécifier le type de terminal mobile pour rationaliser la page pour les téléphones et autres appareils à petit écran.

http://www.w3.org/TR/CSS21/media.html

1

Vous pouvez jeter un oeil à l'en-tête UserAgent dans la requête HTTP et rediriger en conséquence. En PHP, ce serait $_SERVER['HTTP_USER_AGENT'].

Vous devriez cependant faire attention à ne pas écrire beaucoup de code en double.

0

Pour les applications ASP.NET, vous pouvez extraire le fichier Global.asax et l'événement Session_BeginRequest.

Questions connexes