Aller au contenu

variable Session pas dans CSS?


francoisch

Sujets conseillés

Bonjour

Dans une page, je crée une variable Session :

$_SESSION['langueS'] = "en";

Jappelle ensuite une CSS :

<link rel="stylesheet" type="text/css" href="../../style28.php">

qui a dans son en-tête en Php :

$Langue = $_SESSION['langueS'];

Cette variable $Langue nest pas initialisée.

En commentaire, la variable $Langue peut bien être initialisée en la passant en paramètre de lUrl de la CSS et récupérée par Get.

Question : une variable Session ne peut elle pas être utilisée dans une CSS ?

Par avance merci de votre aide.

Francois

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

à mon avis, si tu veux utiliser un paramètre dans ton fichier Php, il faut lui envoyer

<link rel="stylesheet" type="text/css" href="../../style28.php?langue=en">

Mais je ne savais même pas que l'on pouvait appeler un fichier php comme css...

Lien vers le commentaire
Partager sur d’autres sites

En commentaire, la variable $Langue peut bien être initialisée en la passant en paramètre de lUrl de la CSS et récupérée par Get.

@ cyberlaura : ça marche déjà très bien pour le GET... ;)

sinon pour la variable de session, soit tu l'initialises mal, soit tu lui fais un mauvais traitement dans ta page... y a des tortionnaires de variable de session qui ont été condamnés pour moins que ça... :P

Modifié par georges
Lien vers le commentaire
Partager sur d’autres sites

As-tu pensé à faire un session_start() ?

Sinon, je ne pense pas que générer une CSS à la volée soit une idée excellente. Le principe de base des CSS, est d'être un fichier unique à tout le site, téléchargé une seule fois par le navigateur. Avec ta solution, tu le fais recharger à chaque changement de page, et tu perds de fait une grande partie des avantages de l'externalisation des CSS.

Quels paramètres sont modifiés par ta variable de session ? Si c'est relativement simple, je te conseillerai de faire une CSS commune, et une CSS spécifique pour chaque langue, avec les modifications nécessaires à chaque langue. Il te suffirait, dans ta page HTML, de choisir la CSS à afficher en fonction de ta variable de session, et les fichiers CSS ne seront téléchargés qu'une fois chacun.

Lien vers le commentaire
Partager sur d’autres sites

Oups, pardon, j'avais pas vu... Lu trop vite moi.

Par contre, tout dépend comment est appelé le .php dans le cas du CSS. S'il agit comme un include, pas de raison que ça ne fonctionne pas.

Par contre, s'il s'agit d'une toute autre instance de php, la session ne peut pas être connue dans ce cas, à mon avis...

Lien vers le commentaire
Partager sur d’autres sites

bonjour et merci de vos réponses.

Pour ce qui est de ma question, Oui, j'ai l'impression que l'appel de la CSS par Link ne permet pas l'utilisation d'une variable de session, sans savoir l'expliquer; il me reste le passage en paramètre, que j'aurais préféré éviter car j'essaie d'utiliser les variables de session plutôt que de rallonger les Url avec des paramètres.

Oui, j'ai bien un session_start().

Ma CSS contient du Php pour plusieurs raisons, en particulier pour certaines valeurs qui apparaissent en plusieurs endroits dans les styles; je les ai externalisées en variables Php et je les exprime en <?php echo $variable; ?> dans la CSS.

Pour ce qui concerne la variable $Langue, j'en ai besoin car j'ai des utilisateurs français et anglais; mes pages parlent donc l'une ou l'autre langue.

Pour l'utilisation de $Langue par la CSS:

- mon image de bannière est décrite dans la CSS (normal)

- mes utilisateurs anglais souhaitent une image bannière différente de la bannière standard

- j'initialise donc le nom du fichier de l'image dans la partie Php avant de passer à la CSS proprement dite

Merci encore de vos réponses.

Francois

Lien vers le commentaire
Partager sur d’autres sites

cependant, je suis de l'avis du captain torch : servir 2 feuilles de style distinctes selon la langue semble plus "propre", non ?

Lien vers le commentaire
Partager sur d’autres sites

Le principe de base des CSS, est d'être un fichier unique à tout le site, téléchargé une seule fois par le navigateur. Avec ta solution, tu le fais recharger à chaque changement de page, et tu perds de fait une grande partie des avantages de l'externalisation des CSS.

Ce n'est parce que la page est générée dynamiquement en php qu'elle ne peut pas être mise en cache par le navigateur. D'autant plus que le navigateur ne peux pas savoir qu'elle est généré dynamiquement.

cependant, je suis de l'avis du captain torch : servir 2 feuilles de style distinctes selon la langue semble plus "propre", non ?

C'est discutable si on doit gérer 16 langues par exemple ;o)

Lien vers le commentaire
Partager sur d’autres sites

bonjour et merci de vos posts.

Des exemples de variables Php dans ma CSS:

- les couleurs: color: <?=$bordeaux?>;

- les tailles: font-size: <?=$fontsizeh2 ?>em;

- l'image bannière: background-image:url("image/<?=$imageBandeau ?>");

- des dimensions: width: <?=$widthmenu ?>%;

Toutes ces variables sont valorisées au début dans la partie Php de la CSS mais elles ne changent pas d'un appel sur l'autre.

A coté de ça, ces éléments variables à l'appel de la CSS:

- la langue: pour le choix de l'image banière, pas pour le choix des textes (fait hors CSS) mettons: un appl francais pour un appel anglais, fréquence forte)

- la dimensions générale des caractères des textes, pour permettre à une personne mal voyante de pouvoir lire (fréquence à peu près nulle)

Pour les textes, j'ai fait au plus simple (mon site n'est pas bavard) en les remplaçant dans les pages par des variables et en appelant l'un de deux fichiers contenant ces variables valorisées, soit français, soit anglais.

Dans deux-trois cas un peu bavards, j'ai des "doubles" pages.

Mais rien dans la CSS.

Passer le SID en paramètre: Oui, c'est une excellente idée, que je vais creuser.

Merci de vos commentaires.

Francois

Lien vers le commentaire
Partager sur d’autres sites

cependant, je suis de l'avis du captain torch : servir 2 feuilles de style distinctes selon la langue semble plus "propre", non ?

C'est discutable si on doit gérer 16 langues par exemple ;o)

C'est pour cela que pour ma part c'est 3 feuilles de styles : une commune, une FR, une EN, comme cela chaque fichier de langue n'a que ce qui diffère et j'appelle systématiquement la commune suivi de celle de la langue correspondante. J'aime pas mettre du php dans les feuilles de style

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...