Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pour ou contre l'interpretation des fichier js p ar Php..

8 réponses
Avatar
Remi ROUSSET
Bjr,

J'utilise un certain nombre de fichiers Js, qui font appel à des
variables de Php.
Pour l'instant, j'ai choisi de faire interpréter les fichiers Js à mon
serveur en éditant la ligne :
AddType application/x-httpd-php .php .js

Ainsi, je peux placer des variables php au sein de mes scripts js
(notamment des variables de session ou d'environnement.

Cependant, je me demandais si le choix de cette solution était
judicieux ou pas.
J'aurais aussi pu , mettre tous mes scripts Js dans un fichier .php,
que j'incluerai en lieu et place de mes fichiers js, ils seraient
interprétés de la même manière.

Pensez vous qu'il y ait des contre indications ou des risques à faire
interpréter les fichiers js, par Php, l'un des deux solution vous
semble t elle à privilégier, si oui, pourquoi ?

Merci d'avance.
Salutations.

(Je précise que j'ai la main sur l'environnement et sur le serveur, et
que je peux facilement editer mon httdp.conf à volonté)

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net

8 réponses

Avatar
Olivier Miakinen

J'utilise un certain nombre de fichiers Js, qui font appel à des
variables de Php.
Pour l'instant, j'ai choisi de faire interpréter les fichiers Js à mon
serveur en éditant la ligne :
AddType application/x-httpd-php .php .js


Si tu as d'autres fichiers suffixés .js qui ne contiennent pas de code
PHP, c'est dommage de perdre du temps à les faire parser par PHP.

[...]

Pensez vous qu'il y ait des contre indications ou des risques à faire
interpréter les fichiers js, par Php, l'un des deux solution vous
semble t elle à privilégier, si oui, pourquoi ?


Le risque principal est une perte de temps. Personnellement, je n'aurais
aucun scrupule quant aux conventions de nommage des fichiers JavaScript,
et je les suffixerais simplement .php quand ils contiennent du PHP.

Si tu veux garder un « .js » parce que cela te semble philosophiquement
plus satisfaisant, tu peux les suffixer « .js.php » sans avoir besoin
d'ajouter .js dans le AddType, ou bien tu peux les suffixer « .php.js »
en ajoutant ce double suffixe dans ton AddType :

AddType application/x-httpd-php .php .php.js

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.

Avatar
John GALLET
Bonjour,

J'utilise un certain nombre de fichiers Js, qui font appel à des
variables de Php.
Moui, enfin, que tu construits dynamiquement côté serveur en php.


Pour l'instant, j'ai choisi de faire interpréter les fichiers Js à mon
serveur en éditant la ligne :
AddType application/x-httpd-php .php .js
Mouarf.


Ainsi, je peux placer des variables php au sein de mes scripts js
(notamment des variables de session ou d'environnement.
Inutile de faire ça pour ça. Si tu fais :

<!-- toto.js -->
<script...>
....<?php echo $ma_variable_php; ?>
....
</script>

<?php
// appel.php
$ma_variable_php="coucou";
require('toto.js');
?>

Ca doit fonctionner.


Cependant, je me demandais si le choix de cette solution était
judicieux ou pas.


Perso ça me plait pas, mais je n'arrive aps à vraiemnt donner une raison
factuelle.

J'aurais aussi pu , mettre tous mes scripts Js dans un fichier .php,
que j'incluerai en lieu et place de mes fichiers js, ils seraient
interprétés de la même manière.
Ou même un .toto, on s'en fout hein...


Pensez vous qu'il y ait des contre indications ou des risques à faire
interpréter les fichiers js, par Php, l'un des deux solution vous
semble t elle à privilégier, si oui, pourquoi ?


Moi ça me plait vraiment pas que quelqu'un puisse faire dans son
navigateur ou autre :
http://...../toto.js?arg1«cd
pile poil comme si c'était du php. En register_globals=On ça pue complet,
mais même sans ça, intrinsèquement, ça ne me plait pas.

En tous cas, il faudrait que tes .js soient en dehors de l'arborescence
web, ou protégés dans un sous répertoire par un .htaccess <DENY FROM ALL> sinon
tu vas t'emmerder à gérer les erreurs d'affichage d'appel direct par le
navigateur.

En conclusion je dirais que c'est inutile et potentiellement dangeureux,
donc perso je ferais pas.

a++;
JG

Avatar
John GALLET
AddType application/x-httpd-php .php .js
Perso ça me plait pas, mais je n'arrive aps à vraiemnt donner une raison

factuelle.
Une raison factuelle possible : dans un upload de fichiers, on pourrait

parfaitement considérer que l'extension .js est autorisée à l'upload car
c'est "toujours exécuté côté client". Là non. Si on uploade un fichier .js
qui contient du php, il sera exécuté côté serveur.
Cas tordu, nous sommes bien d'accord, mais nous autres humains sommes
pleins de réflexes durement acquis, entre autres .js = client. Donc il
doit traîner d'autres PACs de ce genre là.
My 2 centimes.

a++;
JG


Avatar
Jean-Marc Molina
Olivier Miakinen a écrit/wrote :
Si tu veux garder un « .js » parce que cela te semble
philosophiquement plus satisfaisant, tu peux les suffixer « .js.php »
sans avoir besoin d'ajouter .js dans le AddType, ou bien tu peux les
suffixer « .php.js » en ajoutant ce double suffixe dans ton AddType :


Up! Up! Pour l'extension .js.php. Bien pratique et ça évite de modifier le
serveur pour ça.

--
Jean-Marc.

Avatar
Jean-Marc Molina
Remi ROUSSET a écrit/wrote :
Ainsi, je peux placer des variables php au sein de mes scripts js
(notamment des variables de session ou d'environnement.


Faut quand même pas que ça devienne une mauvaise habitude. Donc jauge bien
si tu ne peux réellement pas faire autrement. Il est préférable de toujours
respecter les frontières entre les couches d'une application. PHP,
JavaScript, la présentation avec HTML/XHTML/CSS... Faut pas tout mélanger au
risque de ne plus pouvoir mettre à jour ton application dans quelques mois.
Question de maintenance.

Quels variables d'environnement tu veux passer ? Serveurs et compagnie ?
Faut aussi penser que JavaScript peut être désactivé par l'utilisateur. On
répond souvent « oui mais si il fait ça il est con » bah oui peut-être mais
si ton application n'est pas prévu pour tourner ça... n'importe quel hacker
peut se ramener sur ton site et trouver des failles de sécurité. Injection
de code pour un formulaire HTML validé par JS et traité par PHP... Si tu
coupes l'herbe sous les pieds de l'infâme JS... L'adorable PHP sera pris au
dépourvu en traitant un formulaire non validé. Vous pouvez me rappeler l'URL
de votre site ? :).

Cependant, je me demandais si le choix de cette solution était
judicieux ou pas.


Tout dépend réellement de l'utilisation que tu en fais. Mes premiers essais
remontent à l'époque où je cherchais à connaître la résolution de l'écran de
l'utilisateur en PHP... Forcément JavaScript la connaissait mais pas PHP
(client JavaScript, côté serveur pour PHP, forcément). Après c'était surtout
de la bidouille pour afficher certaines variables PHP en JavaScript, à
l'époque où j'essayais de débogueur du PHP en JavaScript... Quelque chose
comme ça :).

J'aurais aussi pu , mettre tous mes scripts Js dans un fichier .php,
que j'incluerai en lieu et place de mes fichiers js, ils seraient
interprétés de la même manière.


Bah voyons :). T'es bien le genre à tremper ton pain d'épices dans ton lait
:). ne pas mélanger les couteaux et les fourchettes, JS et PHP. Inclure un
script JS dans PHP non plus. HTML c'est l'aggrégateur de tout ce petit
monde, normalement, sauf cas spécial, cas extrême... peut-être ton cas
d'ailleurs :). En général pour éviter les dépendances entres les modules :
PHP -> HTML <- JS. Pas en arriver à HTML <-> PHP <- JS -> HTML.

Pensez vous qu'il y ait des contre indications ou des risques à faire
interpréter les fichiers js, par Php, l'un des deux solution vous
semble t elle à privilégier, si oui, pourquoi ?


En terme de performances pas forcément car le parsing d'un script PHP ou
d'une page HTML par le Zend Engine prend peu de temps, comparé au traitement
du script PHP proprement dit... Mais c'est toujours ça de perdu alors c'est
dommage. L'optimistion n'est pas à prendre en compte ici, comme dans la
majorité des cas, c'est un problème de logique... Pourquoi ferais-tu ça ?
Existe-t-il une solution plus élégante ? ET IL EN EXISTE TOUJOURS UNE.

(Je précise que j'ai la main sur l'environnement et sur le serveur, et
que je peux facilement editer mon httdp.conf à volonté)


On est mal barré alors. Ya plus de pilote dans l'avion, je rigole :).

--
Jean-Marc.

Avatar
John GALLET
Up! Up! Pour l'extension .js.php. Bien pratique et ça évite de modifier le
serveur pour ça.


Bah oui. Et puis on ajoute .inc. pendant qu'on y est ça donnera
toto.inc.js.php ?

Avatar
Jean-Marc Molina
John GALLET a écrit/wrote :
Bah oui. Et puis on ajoute .inc. pendant qu'on y est ça donnera
toto.inc.js.php ?


Down! Down! On se contente de .inc.php pour les biblio PHP et de js.php pour
les JavaScript dynamiques, comme je l'ai dit ailleurs utilisé uniquement
dans des tests, sauf cas exceptionnel. Une autre solution consiste aussi à
créer des répertoires : include pour les .inc.php renommés en .php, de même
pour les JS, scripts PHP... Question de pas avoir tous les fichiers à la
racine :). Un bon exemple, la structure des répertoires de PEAR.

--
Jean-Marc.

Avatar
Thibault TAILLANDIER
Bjr,

J'utilise un certain nombre de fichiers Js, qui font appel à des
variables de Php.
Pour l'instant, j'ai choisi de faire interpréter les fichiers Js à mon
serveur en éditant la ligne :
AddType application/x-httpd-php .php .js

Ainsi, je peux placer des variables php au sein de mes scripts js
(notamment des variables de session ou d'environnement.

Cependant, je me demandais si le choix de cette solution était judicieux
ou pas.
J'aurais aussi pu , mettre tous mes scripts Js dans un fichier .php, que
j'incluerai en lieu et place de mes fichiers js, ils seraient
interprétés de la même manière.

Pensez vous qu'il y ait des contre indications ou des risques à faire
interpréter les fichiers js, par Php, l'un des deux solution vous semble
t elle à privilégier, si oui, pourquoi ?


Bonjour,

Juste pour rajouter une 3eme "solution", que j'ai deja utilisée :
mettre les script en .php et faire :
<script src="script.php" language="JavaScript" />
<script src="script2.php" language="JavaScript" />

Mettre tes .js automatiquement interprété doit "ralentir" je pense dans
le cas ou ils n'ont que du texte brut ... mais ca doit pas etre violent.

Mettre tous les .js dans un seul fichier .php reviendrait à ma solution,
sauf que c'est mieux de garder ton architecture modulaire.


Merci d'avance.
Salutations.

(Je précise que j'ai la main sur l'environnement et sur le serveur, et
que je peux facilement editer mon httdp.conf à volonté)



Bye
--
Thibault