du php dans un fichier css

du php dans un fichier css - PHP - Programmation

Marsh Posté le 08-01-2005 à 19:21:38    

Bonjour,
 
Je souhaite savoir comment faire pour que le serveur interprète le php situé dans un fichier css.
 
Par exemple :
 
j'ai une page index.html qui contient un ligne pointant vers une feuille de style de la manière suivante :
<link REL="StyleSheet" TYPE="text/css" HREF="style.css">
dans cette page style.css je veux écrire un script php. Ca marche po...
 
Du coup je renomme style.css en style.php et j'écris dans index.html la ligne :  
<link REL="StyleSheet" TYPE="text/css" HREF="style.php">
mais ça marche tjs pas... comme si le navigateur n'allait pas chercher style.php
 
Voila..
 
Merci !

Reply

Marsh Posté le 08-01-2005 à 19:21:38   

Reply

Marsh Posté le 08-01-2005 à 19:47:26    

bah c'est peut-etre parce que c'est logique, on peut pas faire de php dans un css, si?

Reply

Marsh Posté le 08-01-2005 à 21:00:12    

Ryoh a écrit :

bah c'est peut-etre parce que c'est logique, on peut pas faire de php dans un css, si?


 
Je crois que son but n'est pas de faire du php dans un fichier css (ce qui n'est pas impossible d'ailleurs) mais d'utiliser un fichier php pour générer des css dynamiques...
 
@Moof2 :
 
La deuxième solution est la bonne pourtant, n'oublies pas de préciser le content-type adéquat dans ton fichier style.php pour que celui çi soit bien pris pour une css :)

Reply

Marsh Posté le 08-01-2005 à 21:01:14    

Si on peut, mais il faut respecter quelques regles.
 
D'abord ton fichier doit finir en ".php" afin que le serveur sache qu'il doit le traiter en tant que fichier php.
Ensuite il faut que dans ton fichier style.php tu dise au navigateur que ce que tu va lui envoyer correspond a ce qu'il attends, c'est a dire a du css.  
Pour cela tu dois changer le type mime via la fonction header.
 
Donc ton fichier style.php pourrait ressembler a ca :

Code :
  1. <?php
  2. header('Content-type: text/css');
  3. ...
  4. ?>
  5. body { ...
  6. }


Reply

Marsh Posté le 08-01-2005 à 22:36:30    

Oui !!
Merci beaucoup, c'est exactement ce que je cherchais, tout fonctionne bien à présent !

Reply

Marsh Posté le 09-01-2005 à 16:31:46    

l'extention css n'est qu'un convention tu peux mettre .toto ou .php ça fonctionnera quand même.
J'utilise cette technique pour cacher du code javascript  
<script src="js.php?xxxx=xxxx"/>

Reply

Marsh Posté le 09-01-2005 à 18:00:26    

berceker united a écrit :

l'extention css n'est qu'un convention tu peux mettre .toto ou .php ça fonctionnera quand même.
J'utilise cette technique pour cacher du code javascript  
<script src="js.php?xxxx=xxxx"/>


 
Attention, pour qu'un fichier soit interprete par php il faut qu'il puisse etre identifie.
Pour cela la pluspart du temps on utilise l'extension ".php".
Si tu veux tu peux la changer en ce que tu veux, mais tu devras alors reconfigurer ton serveur web pour lui indiquer que les fichier ".trucmuche" doivent etre traites avec php.
 
Ce que tu dis est d'ailleurs faux. Pour que le "texte" qui est renvoye par ton script php soit interprete comme du css tu dois respecter le "mime" ou le "content type". Le browser attends du "text/css", si tu lui envoi qqch d'autre alors ca ne marchera pas. C'est d'ailleurs le probleme qu'avait Moof2 au debut.
 
Si ca marche dans ton cas dans le cadre de ton JS c'est soit parce que tu as modifie le header, soit parceque le type par default est accepte par le browser pour du JS. Le JS doit normalement etre du "text/javascript"...
 
Sinon concernant ton commentaire sur le fait de "cacher" ton script JavaScript, sache que si le browser peut lire le fichier, alors il ne peut pas etre cache.
D'ailleurs dans ton exemple il suffit de metre "js.php?xxxx=xxxx" dans la barre d'adresses (en respectant le path) et n'importe qui pourra lire ton fichier js ...


Message édité par cerel le 09-01-2005 à 18:04:55
Reply

Marsh Posté le 09-01-2005 à 18:15:07    

Cerel a écrit :

Attention, pour qu'un fichier soit interprete par php il faut qu'il puisse etre identifie.
Pour cela la pluspart du temps on utilise l'extension ".php".
Si tu veux tu peux la changer en ce que tu veux, mais tu devras alors reconfigurer ton serveur web pour lui indiquer que les fichier ".trucmuche" doivent etre traites avec php.
 
Ce que tu dis est d'ailleurs faux. Pour que le "texte" qui est renvoye par ton script php soit interprete comme du css tu dois respecter le "mime" ou le "content type". Le browser attends du "text/css", si tu lui envoi qqch d'autre alors ca ne marchera pas. C'est d'ailleurs le probleme qu'avait Moof2 au debut.
 
Si ca marche dans ton cas dans le cadre de ton JS c'est soit parce que tu as modifie le header, soit parceque le type par default est accepte par le browser pour du JS. Le JS doit normalement etre du "text/javascript"...
Non sans placer de type MIME le navigateur l'interprete quand même. JS ou CSS. Fait le teste tu verras que ça marche mais peut etre pas sur les autre navigateur telle que OPERA NETSCAPE et autre j'ai pas testé.
 
Sinon concernant ton commentaire sur le fait de "cacher" ton script JavaScript, sache que si le browser peut lire le fichier, alors il ne peut pas etre cache.
D'ailleurs dans ton exemple il suffit de metre "js.php?xxxx=xxxx" dans la barre d'adresses (en respectant le path) et n'importe qui pourra lire ton fichier js ...
Non ;) je sais que c'est possible de lire en récupérant le chemin entierement mais le parametre est suptile puisqu'il sagit du time()
javascript.php?synchro=time() Dans le fichier php il y a un time() aussi  je fais la comparaison entre ce qu'il y a dans le paramètre et le celui dans le fichier en y accordant un tolérance de quelques second à cause du temps de chargement. Pour que quelqu'un puisse lire le fichier il faut qu'il connaisse le time au moment ou il voudra l'executer. Il va peut être réussire mais avec du temps ou bien un script mais j'ai rajouter une equiation donc a lui de la trouver. De plus dans le header j'ai fais de telle sorte qu'il puisse pas ce mettre dans le cache par contre c'est pas garantie a 100%.



Message édité par Berceker United le 09-01-2005 à 18:16:08
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed