vue : 1 492 fois |
PHP ne permet pas (à ce jour et à ma connaissance) de détecter les plugins du navigateur client. Il faut passer par Javascript. Mais je voulais ensuite initialiser une variable PHP pour le cas où, en l'absence de plugin, je puisse inclure un fichier invitant le visiteur à télécharger le plugin manquant en lui fournissant un lien direct. Un exemple spécifique :Comme Adobe ne fournit plus de plugin Acrobat Reader pour Firefox Mac il me fallait :
Si vous êtes sur FireFox Mac, vous pouvez tester par vous même avec cet exemple. Le script expliqué pas à pasDétéction du visiteur "FireFox Mac" en PHPDonc, en tout début de document, je place mes codes PHP et j'initialise mes variables : <?php //------- detection du Mac //------- detection si mac ppc //------- detection si mac intel //------- detection si camino //-------Initialisation de la variable $nav if($mac && $ppc){$nav='PPC';} A ce stade, je sais déjà si le visiteur
et j'en ai profité pour initialiser la variable $urlplugin qui sera différente selon que le visiteur est sur Intel ou PPC Détection si le plugin est présentLà, je fais appel au Javascript que je place dans le <HEAD></HEAD> de la page. la variable plug est un tableau de tous les plugins du navigateur client <script type="text/javascript"> Je crée donc une boucle qui va parcourir tous les plugins présent et m'intéresser uniquement au plugin PDF. for(i=0;i<=nb;i++){ Si le plugin est présent j'initialise une variable PHP, en l'occurrence la variable que j'ai baptisée $pdf à l'aide de l'instruction document.write() de JavaScript et je ferme mon script. document.write("<?php $pdf=1 ?>");} Dans le corps de la page (<body> </body>)A partir de ce moment on peut faire ce qu'on veut en PHP. Si $pdf==1 on peut facilement faire afficher un morceau de page ou inclure un fichier externe. Pour cet exemple, j'ai choisi la première solution : afficher un moreceau de page. Si $nav existe (c'est Firefox et Mac) et $cam==0 (ce n'est pas Camino) <?php et si $pdf==1 (le plugin est présent), j'affiche une phrase pour l'exemple if($pdf==1){echo "Vous êtes sur FireFox Mac $nav et vous avez le plugin PDF <hr>";} sinon, j'invite le visiteur à télécharge le plugin selon sa version Intel ou PPC else{ ?><a href="<?php echo $urlplugin?>" target="_blank"><?php echo $urlplugin?></a> Et voilà ;) ConclusionEvidemment, il est absurde d'afficher au visiteur qu'il possède le plugin en question. Vous effecerez la ligne if($pdf==1){echo "Vous êtes sur FireFox Mac $nav et vous avez le plugin PDF <hr>";} et replacerez le else{ par if($pdf==1){ Vous pouvez adapter ce script comme bon vous semble et, si vous êtes sympa, vous ne manquerez pas de placer une ligne de commentaire indiquant l'auteur la source ;))) En fait toute l'astuce consiste simplement à utiliser le document.write() de Javascript pour initialiser une variable PHP. Attention, ce que vous affectez à la variable php est une valeur alphanumérique. si, par exemple vous écrivez le script suivant : <script type="text/javascript"> la variable $pdf sera égale à "a" et non à 1. Vous pouvez télécharge la page exemple.php brute de décoffrage (sans styles) au format .zip qui pèse 4 Ko |