Forum de discussion
Forum « Programmation Javascript » (archives)
Re: detect nav pour choisir entre src/javascript et include php
Envoyé: 19 mars 2004, 10h12 par Oznog
Ouf! Deux choses, premièrement le Javascript est exécuté en deuxième, le PHP en premier et JAMAIS les deux en même temps (à part l'exception du Javascript serveur qui n'a pas accès au user-agent du navigateur).
Pour la simble et bonne raison que tu dois sortir de chez toi et aller chez le barbier AVANT de te faire faire la barbe ;-)
- Le serveur est disponible
- Une requête lui est envoyée (sans Javascript, une requête c'est une en-tête HTTP comme celle que tu vois dans la barre d'adresse du navigateur).
- Il traîte la requête, et l'oriente vers le bon répertoire vuirtuel.
- Ouvre la bonne page PHP et regarde le code
- S'il voit du PHP, ouvre le moteur PHP pour traiter TOUT CODE PHP IMBRIQUÉ DANS LE DOCUMENT pour le REMPLACER PAR LE RÉSULTAT (les echos). Qu'il retourne tout simplement vide de tout code PHP au navigateur. D'ailleurs regarde le code source de n'importe qu'elle page PHP sur le Web.
- Le navigateur reçoi du code, HTML, XHTML, peut être même XML, XSL, voir PDF, une image ou peut importe le type MIME il ne reçoi jammais de PHP bien que l'extension du document demandé soit toujours .php.
Ce code HTML peut avoir du Javascript imbriqué QUI sera interprété par le navigateur (qui ne connaît absolument rien au PHP).
En d'autres mots, si je lis ton code avec cette démarche j'obtiendrait dans le navigateur la ligne "<?php <INCLUDE(pied.php3)>" sans plus. Pas affiché dans la page car elle est balisés par < et >, mais probablement dans le code source si tu regarde via le navigateur. Pour la simple et bonne raison que le moteur PHP n'a jamais vu cette ligne qui a été ajouté après son passage sur le serveur, par le navigateur.
DEUXIÈME POINT
Les include sont aussi "imbriqué" avant que le moteur ne traite le PHP. Le moteur PHP ne reçoi aucune commande INCLUDE mais bien le contenu du INCLUDE. Tu ne peux donc pas utiliser de test PHP ou tout autres code PHP pour en gérer l'inclusion ou non.
La seule solution est de mettre carrément dans ton include les tests de condition et bien sûr les deux codes toujours présent. Ou faire une redirection serveur vers une seconde page. Par exemple si tel navigateur, redirection vers telle page (qui a l'include X) sinon vers telle page (qui a l'include Z).
Ceci dit, la question des include est réglée. Reste ton histoire de navigateur. PHP a aussi la possibilité de récupérer le user-agent sans devoir passer par du Javascript. Mais c'est une autre histoire, à poursuivre dans le forum PHP!
Ciao
Oznog
Réponses
|