xXVoxPopuliXx
Messages postés8Date d'inscriptiondimanche 7 novembre 2010StatutMembreDernière intervention16 novembre 2010 16 nov. 2010 à 22:12
J'entends rangé par a la fin du code, pour la feuille annexe, je le ferais peut-être si je trouve d'autres trucs a ajouter car en attendant, ce n'est pas le plus utile ^^.
mugen23
Messages postés125Date d'inscriptionmardi 4 août 2009StatutMembreDernière intervention27 novembre 2010 16 nov. 2010 à 17:06
bah heuuu néophyte, non, au contraire, un néophyte vas plus galérer en ayant à chercher ça dans le code qu'en ayant un fichier annexe.
Pour listenavigateur(); je ne comprends toujours pas l'intérêt, qu'appèle tu "ranger" ? $liste remplis déjà son rôle de "rangement".
xXVoxPopuliXx
Messages postés8Date d'inscriptiondimanche 7 novembre 2010StatutMembreDernière intervention16 novembre 2010 16 nov. 2010 à 09:19
Pour l'utilité, moi c'est pour lorsque j'ai un css personnalisé pour firefox. Mais l'utilitaire est prévu pour toute future autre utilité, car je suis certains que d'autres auront du boulot pour lui pour d'autres utilisations que moi.
J'ai préféré garder tout en un seul fichier histoire qu'un néophite (comme moi) s'y retrouve facilement et éviter de produire deux fichiers pour un seul petit utilitaire.
Ce programme est actuellement prévu pour qu'on l'actualise manuellement, je pourrais peut-être améliorer le système de stockage mais je préfère tout garder dans un seul fichier php (j'aime pas me retrouver avec une flopée de fichier dans mes dossiers ^^).
Mais je dis pas qu'une version améliorée ne sera pas disponible dans le futur avec cette possibilité, je fais attention a toutes vos bonnes remarques ;)
Listenavigateur est une simple fonction permettant de ranger le tableau contenant la liste des navigateurs et la renvoyant a qui veut.
mugen23
Messages postés125Date d'inscriptionmardi 4 août 2009StatutMembreDernière intervention27 novembre 2010 16 nov. 2010 à 00:26
Je ne vois pas d'autre lieu pour en causer.
'fin bref, perso, il y as un truc qui me perturbe, c'est la non externalisation de ton listing de navigateurs, trop galère à mettre à jour.
puis je capte pas le but de la fonction listenavigateur(); ( si ce n'est pour une question de modularité, dans ce cas, bien vus )
xXVoxPopuliXx
Messages postés8Date d'inscriptiondimanche 7 novembre 2010StatutMembreDernière intervention16 novembre 2010 15 nov. 2010 à 22:49
Statistique par exemple, mais je laisse google amener les gens qui auront besoin de ce programme; je ne pense pas que le lieu soit vraiment a discuter de son utilité mais plutôt de son perfectionnement si tu veux bien :)
Je pense ajouter un détecteur de robot pour ceux qui voudraient faire un peu comme les forums et afficher quand le robot google ou autres se promène sur leur site :)
mugen23
Messages postés125Date d'inscriptionmardi 4 août 2009StatutMembreDernière intervention27 novembre 2010 15 nov. 2010 à 22:37
oui mais je vois toujours pas l'intérêt en fait.
à tu un exemple d'implémentation autre qu'un routeur de feuille de style ?
xXVoxPopuliXx
Messages postés8Date d'inscriptiondimanche 7 novembre 2010StatutMembreDernière intervention16 novembre 2010 15 nov. 2010 à 22:13
Mon outil te renvoi les variables avec le navigateur, la version du navigateur et le moteur css, a toi de décider se que tu veux faire avec après ;) (tu peux même supprimer l'appel à la fonction Navigator() pour ne l'appeler que quand tu le souhaite, il suffit de supprimer les lignes 10 à 20 ;) )
PS: au départ seulement les principaux navigateurs m'intéressais, puis finalement je me suis dis tant qu'a y aller ^^ je pense qu'il y a en a +-110 disponible maintenant (j'ai même oublié de mettre la nouvelle liste des navigateurs détectés dans la mise a jours, se sera pour la prochaine ^^ ).
mugen23
Messages postés125Date d'inscriptionmardi 4 août 2009StatutMembreDernière intervention27 novembre 2010 15 nov. 2010 à 20:33
je n'ai fais qu'une lecture en diagonal mais si j'ai bien compris, l'idée c'est d'aiguiller le style qui serras envoyé au client suivant son navigateur ?
ça fais lourd comme process pour corriger ce que l'intégrateur n'as pas sus faire OO
puis, encore une fois, je n'ai lus qu'en diagonale, donc excuse moi si je me plante mais pourquoi ne pas stocker, par exemple, ton résultat dans une variable de session pour éviter de réexécuter la fonction à chaque requête ?
NB : en générale c'est IE qui fout la merde donc une feuille de style dédié à IE est amplement suffisante.
xXVoxPopuliXx
Messages postés8Date d'inscriptiondimanche 7 novembre 2010StatutMembreDernière intervention16 novembre 2010 15 nov. 2010 à 13:32
Oups, désolé, mais cette petite phrase ne sert que d'exemple, personnellement je me sert des variables retournées par Navigator dans des conditions, pas pour afficher le navigateur ^^
Mais merci, se sera corrigé pour la prochaine fois
cs_armenak
Messages postés58Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention25 octobre 2010 15 nov. 2010 à 11:13
Bien que je sois assez d'accord avec l'argumentaire de neigedhiver, j'aime bien ce script et je vais m'en servir comme utilitaire. Merci pour le travail. Une petite remarque de rien : il faut un s à la fin de "tu utilises"...
xXVoxPopuliXx
Messages postés8Date d'inscriptiondimanche 7 novembre 2010StatutMembreDernière intervention16 novembre 2010 15 nov. 2010 à 00:18
Woaw génial tes sources ! J'ai déjà amélioré mon petit Navigator, il peut te détecter un bon paquet de navigateur maintenant ^^
J'ai aussi rajouté la méthode via foreach comme tu l'as conseillé, en effet l'optimisation est meilleur, mais hélas beaucoup de navigateurs, en mauvais cannard, diminuent les performances en nécéssitant de vérifier leur présence en premier malgré qu'ils sont dans les moins exploités :(
Pour preg_match, je n'ai pas fini d'appréhender cette fonction qui à l'air plus compliqué qu'il n'y parait ^^ Mais dés que faire ce peut, cette fonction amènera son lot de performance a mon code :)
Encore un grand merci pour ton aide ;)
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 14 nov. 2010 à 04:24
Par ailleurs, ces liens pourraient t'intéresser...
C'est peut-être plus que nécessaire, mais bon, pour la culture générale, c'est bien aussi ^^
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 14 nov. 2010 à 04:15
Je viens de regarder d'un peu plus près le fonctionnement de ta fonction DecoupeurDeChaineDeCaracteres et je te confirme qu'elle peut être avantageusement remplacée par une bête expression régulière avec preg_match().
Sinon, rajouter un espace devant la chaîne de caractère à tester... mouais... c'est du bricolage alors que la solution que je t'indique est non seulement plus rigoureuse, mais en plus plus rapide (bon pas de grand chose, mais on évite à PHP de convertir le résultat de strpos en booléen, puisqu'on compare justement cette valeur avec FALSE : si le type n'est pas correct, c'est à dire si le résultat de strpos() n'est pas un booléen, PHP ne va pas plus loin dans la comparaison).
En gros, je pense qu'on peut très nettement raccourcir le code de ta source... (peut-être même au point d'en faire un snippet... arf)
xXVoxPopuliXx
Messages postés8Date d'inscriptiondimanche 7 novembre 2010StatutMembreDernière intervention16 novembre 2010 14 nov. 2010 à 01:01
Oui je savais pour les fonction strpos et stripos (j'ai eu le probleme pour Opera qui s'annonce dés la première case de la variable $_SERVER ^^), et pour éviter tout bug j'ai ajouté un espace au début de la chaine de caractère ^^ (voir ligne 25 du code)
Pour ce qui est de DecoupeurDeChaineDeCaractere, cette fonction permet de copier une partie (la version du navigateur) en utilisant un filtre se qui offre une solution adaptable pour la majorité des navigateurs (sauf quelques mauvais canards qui n'indiquent pas leur version).
La méthode que tu explique a l'air bien pratique, je vais inclure ça au plus vite :)
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 14 nov. 2010 à 00:46
Autre chose (désolé pour le double post) :
Les fonctions strpos() et stripos() peut renvoyer 0 (zéro) s'il s'agit du premier caractère, ce qui sera évalué comme FALSE par la structure if.
Il serait donc judicieux d'utiliser un test d'inégalité stricte :
if (FALSE !== strpos($secteurderecherche, $browser['search'])) {
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 14 nov. 2010 à 00:41
2/ Je ne sais pas si elle est vraiment utile pour ton code, parce que j'ai pas forcément bien saisi ce que faisait la fonction DecoupeurDeChaineDeCaracteres... Si ça se trouve, une simple expression régulière avec preg_match() suffit.
4) L'idée est d'avoir un fichier séparé contenant un tableau associatif avec les différents navigateurs, leur nom et la chaîne à chercher. L'idéal étant que l'inclusion de ce fichier retourne le tableau pour le stocker dans une variable :
<?php
return array(
array('name' => 'Firefox', 'search' => 'Firefox'),
array('name' => 'Internet Explorer', 'search' => 'MSIE'),
// Etc
);
?>
Utilisation de ce fichier :
$browsers = require 'navigators.inc.php';
Pour parcourir :
foreach ($browsers as $browser) {
if (strpos($secteurderecherche, $browser['search'])) {
break; // On sort de la boucle, on garde $browser avec les bonnes valeurs
}
}
Cette boucle remplace toute ta série de if. Le code du traitement n'a pas besoin d'être modifié pour rajouter un navigateur (comme IceWeasel par exemple, que tu as omis ;) )
5) T'as pas tort dans la pratique, même si je maintiens ce que j'ai dit dans l'absolu ;)
P.S. : désolé pour la présentation du code, mais les commentaires sur CS sont vraiment mal foutus...
xXVoxPopuliXx
Messages postés8Date d'inscriptiondimanche 7 novembre 2010StatutMembreDernière intervention16 novembre 2010 13 nov. 2010 à 21:02
Merci COD57 ;)
Merci pour cette remarque très constructive NEIGEDHIVER.
1) Je vais revoir mon code pour implémenter cette optimisation (en veillant a se que les répétitions qui se font entre les navigateurs dans la variable $_SERVER ne perturbe pas le programme)
2) hum, je vais en voir plus sur cette fonction afin de voir si elle peut m'aider a améliorer Navigator mais j'avoue qu'aux premiers abords elle semble un peu complexe a saisir ^^
3) oups, se sera corrigé pour la prochaine mise a jours ^^
4) je ne suis pas encore de ce niveau pour me permettre ce type de programmation mais ça viendra :)
5) c'est bien pratique quand tu désire construire quelques petits chefs d'œuvres artistique en CSS pour ne les afficher que pour Firefox (par exemple). Ces "gadjets" sont comme tout se qui est porté design: inutile mais beau a voir pour ceux qui le peuvent. Ce programme te permet d'afficher tes œuvres sans perturber ton site niveau CSS (par exemple: je l'ai monté pour un menu CSS2/CSS3 qui ne dois qu'améliorer l'esthétique normalement, il respectait les standard CSS2 et pourtant seule firefox et chrome ont le bon rendu)
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 13 nov. 2010 à 19:46
Salut,
1/ Il serait bon de ne pas effectuer TOUS les tests de navigateurs : quand on en a trouvé un, a priori, ce ne sera aucun des suivants... Donc utiliser elseif peut être une bonne idée.
2/ Tu devrais t'intéresser à la fonction preg_split()
3/ Browser est la bonne orthographe, broswer une mauvaise.
4/ "Il se base sur une logique permettant d'éditer et rajouter aisément des navigateurs." => Pour que ce soit encore plus simple, le mieux est un fichier séparé avec les différents navigateurs.
5/ "Il vous permettra d'adapter le rendu graphique de vos pages en fonction des moteurs web graphiques utilisé par vos visiteurs" => C'est une pratique qui est découragée aujourd'hui, depuis que les standards ont réellement leur place sur le web ; ce qui est encouragé, c'est d'utiliser des standards. Si on se plie toujours aux contraintes imposées par des logiciels propriétaires qui implémentent leurs technologies propriétaires, on peut dire adieu à la compatibilité et la portabilité ; au lieu de ça, il est préférable, à mon sens, de pénaliser les logiciels qui ne respectent pas les standards afin de forcer leurs éditeurs à s'y mettre sérieusement (lesquels standards ne sont pas là pour freiner le développement et l'innovation, mais garantir à l'utilisateur final un affichage correct du contenu web).
cod57
Messages postés1653Date d'inscriptiondimanche 7 septembre 2008StatutMembreDernière intervention11 septembre 201319 13 nov. 2010 à 14:57
Bonjour
Bonne idée ce script pour charger des css personnalisés au navigateurs
a++
16 nov. 2010 à 22:12
16 nov. 2010 à 17:06
Pour listenavigateur(); je ne comprends toujours pas l'intérêt, qu'appèle tu "ranger" ? $liste remplis déjà son rôle de "rangement".
16 nov. 2010 à 09:19
J'ai préféré garder tout en un seul fichier histoire qu'un néophite (comme moi) s'y retrouve facilement et éviter de produire deux fichiers pour un seul petit utilitaire.
Ce programme est actuellement prévu pour qu'on l'actualise manuellement, je pourrais peut-être améliorer le système de stockage mais je préfère tout garder dans un seul fichier php (j'aime pas me retrouver avec une flopée de fichier dans mes dossiers ^^).
Mais je dis pas qu'une version améliorée ne sera pas disponible dans le futur avec cette possibilité, je fais attention a toutes vos bonnes remarques ;)
Listenavigateur est une simple fonction permettant de ranger le tableau contenant la liste des navigateurs et la renvoyant a qui veut.
16 nov. 2010 à 00:26
'fin bref, perso, il y as un truc qui me perturbe, c'est la non externalisation de ton listing de navigateurs, trop galère à mettre à jour.
puis je capte pas le but de la fonction listenavigateur(); ( si ce n'est pour une question de modularité, dans ce cas, bien vus )
15 nov. 2010 à 22:49
Je pense ajouter un détecteur de robot pour ceux qui voudraient faire un peu comme les forums et afficher quand le robot google ou autres se promène sur leur site :)
15 nov. 2010 à 22:37
à tu un exemple d'implémentation autre qu'un routeur de feuille de style ?
15 nov. 2010 à 22:13
PS: au départ seulement les principaux navigateurs m'intéressais, puis finalement je me suis dis tant qu'a y aller ^^ je pense qu'il y a en a +-110 disponible maintenant (j'ai même oublié de mettre la nouvelle liste des navigateurs détectés dans la mise a jours, se sera pour la prochaine ^^ ).
15 nov. 2010 à 20:33
ça fais lourd comme process pour corriger ce que l'intégrateur n'as pas sus faire OO
puis, encore une fois, je n'ai lus qu'en diagonale, donc excuse moi si je me plante mais pourquoi ne pas stocker, par exemple, ton résultat dans une variable de session pour éviter de réexécuter la fonction à chaque requête ?
NB : en générale c'est IE qui fout la merde donc une feuille de style dédié à IE est amplement suffisante.
15 nov. 2010 à 13:32
Mais merci, se sera corrigé pour la prochaine fois
15 nov. 2010 à 11:13
15 nov. 2010 à 00:18
J'ai aussi rajouté la méthode via foreach comme tu l'as conseillé, en effet l'optimisation est meilleur, mais hélas beaucoup de navigateurs, en mauvais cannard, diminuent les performances en nécéssitant de vérifier leur présence en premier malgré qu'ils sont dans les moins exploités :(
Pour preg_match, je n'ai pas fini d'appréhender cette fonction qui à l'air plus compliqué qu'il n'y parait ^^ Mais dés que faire ce peut, cette fonction amènera son lot de performance a mon code :)
Encore un grand merci pour ton aide ;)
14 nov. 2010 à 04:24
http://www.useragentstring.com/pages/useragentstring.php
http://techpatterns.com/forums/about304.html
C'est peut-être plus que nécessaire, mais bon, pour la culture générale, c'est bien aussi ^^
14 nov. 2010 à 04:15
Sinon, rajouter un espace devant la chaîne de caractère à tester... mouais... c'est du bricolage alors que la solution que je t'indique est non seulement plus rigoureuse, mais en plus plus rapide (bon pas de grand chose, mais on évite à PHP de convertir le résultat de strpos en booléen, puisqu'on compare justement cette valeur avec FALSE : si le type n'est pas correct, c'est à dire si le résultat de strpos() n'est pas un booléen, PHP ne va pas plus loin dans la comparaison).
En gros, je pense qu'on peut très nettement raccourcir le code de ta source... (peut-être même au point d'en faire un snippet... arf)
14 nov. 2010 à 01:01
Pour ce qui est de DecoupeurDeChaineDeCaractere, cette fonction permet de copier une partie (la version du navigateur) en utilisant un filtre se qui offre une solution adaptable pour la majorité des navigateurs (sauf quelques mauvais canards qui n'indiquent pas leur version).
La méthode que tu explique a l'air bien pratique, je vais inclure ça au plus vite :)
14 nov. 2010 à 00:46
Les fonctions strpos() et stripos() peut renvoyer 0 (zéro) s'il s'agit du premier caractère, ce qui sera évalué comme FALSE par la structure if.
Il serait donc judicieux d'utiliser un test d'inégalité stricte :
if (FALSE !== strpos($secteurderecherche, $browser['search'])) {
Cf la doc à ce sujet : http://fr.php.net/strpos
14 nov. 2010 à 00:41
4) L'idée est d'avoir un fichier séparé contenant un tableau associatif avec les différents navigateurs, leur nom et la chaîne à chercher. L'idéal étant que l'inclusion de ce fichier retourne le tableau pour le stocker dans une variable :
<?php
return array(
array('name' => 'Firefox', 'search' => 'Firefox'),
array('name' => 'Internet Explorer', 'search' => 'MSIE'),
// Etc
);
?>
Utilisation de ce fichier :
$browsers = require 'navigators.inc.php';
Pour parcourir :
foreach ($browsers as $browser) {
if (strpos($secteurderecherche, $browser['search'])) {
break; // On sort de la boucle, on garde $browser avec les bonnes valeurs
}
}
Cette boucle remplace toute ta série de if. Le code du traitement n'a pas besoin d'être modifié pour rajouter un navigateur (comme IceWeasel par exemple, que tu as omis ;) )
5) T'as pas tort dans la pratique, même si je maintiens ce que j'ai dit dans l'absolu ;)
P.S. : désolé pour la présentation du code, mais les commentaires sur CS sont vraiment mal foutus...
13 nov. 2010 à 21:02
Merci pour cette remarque très constructive NEIGEDHIVER.
1) Je vais revoir mon code pour implémenter cette optimisation (en veillant a se que les répétitions qui se font entre les navigateurs dans la variable $_SERVER ne perturbe pas le programme)
2) hum, je vais en voir plus sur cette fonction afin de voir si elle peut m'aider a améliorer Navigator mais j'avoue qu'aux premiers abords elle semble un peu complexe a saisir ^^
3) oups, se sera corrigé pour la prochaine mise a jours ^^
4) je ne suis pas encore de ce niveau pour me permettre ce type de programmation mais ça viendra :)
5) c'est bien pratique quand tu désire construire quelques petits chefs d'œuvres artistique en CSS pour ne les afficher que pour Firefox (par exemple). Ces "gadjets" sont comme tout se qui est porté design: inutile mais beau a voir pour ceux qui le peuvent. Ce programme te permet d'afficher tes œuvres sans perturber ton site niveau CSS (par exemple: je l'ai monté pour un menu CSS2/CSS3 qui ne dois qu'améliorer l'esthétique normalement, il respectait les standard CSS2 et pourtant seule firefox et chrome ont le bon rendu)
13 nov. 2010 à 19:46
1/ Il serait bon de ne pas effectuer TOUS les tests de navigateurs : quand on en a trouvé un, a priori, ce ne sera aucun des suivants... Donc utiliser elseif peut être une bonne idée.
2/ Tu devrais t'intéresser à la fonction preg_split()
3/ Browser est la bonne orthographe, broswer une mauvaise.
4/ "Il se base sur une logique permettant d'éditer et rajouter aisément des navigateurs." => Pour que ce soit encore plus simple, le mieux est un fichier séparé avec les différents navigateurs.
5/ "Il vous permettra d'adapter le rendu graphique de vos pages en fonction des moteurs web graphiques utilisé par vos visiteurs" => C'est une pratique qui est découragée aujourd'hui, depuis que les standards ont réellement leur place sur le web ; ce qui est encouragé, c'est d'utiliser des standards. Si on se plie toujours aux contraintes imposées par des logiciels propriétaires qui implémentent leurs technologies propriétaires, on peut dire adieu à la compatibilité et la portabilité ; au lieu de ça, il est préférable, à mon sens, de pénaliser les logiciels qui ne respectent pas les standards afin de forcer leurs éditeurs à s'y mettre sérieusement (lesquels standards ne sont pas là pour freiner le développement et l'innovation, mais garantir à l'utilisateur final un affichage correct du contenu web).
13 nov. 2010 à 14:57
Bonne idée ce script pour charger des css personnalisés au navigateurs
a++