8797 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai fait une feuille de style en php et j'aimerais savoir pourquoi ça ne fonctionne pas. Est-ce que ce serait à cause de ma variable session?

Voici le code de ma page index:

<?php
session_start();
	
$_SESSION['couleur'] = (isset($_SESSION['couleur'])) ? $_SESSION['couleur'] : 0;
$_SESSION['couleur'] = (isset($_GET['couleur'])) ? $_GET['couleur'] : $_SESSION['couleur'];
?>

<HTML>
<HEAD>

<link rel="stylesheet" href="css/styles.css">
<link rel="stylesheet" type="text/css" href="css/styles_couleurs.php">
		
</HEAD>


<BODY>
<?php
include "util/fonctions.php";
include "util/init_variables.php";
include "util/debug.php";
include "gabarits/01gabarit.php";
?>
		
</BODY>
</HTML>


Et celui de ma page styles_couleurs.php:


<?php

$tabCouleurs = array();
$tabCouleurs[] = array("motif_bleu.jpg","#CEDEF2", "#003366","#000033");
$tabCouleurs[] = array("motif_vert.jpg","#DCF1D6", "#3B713E","#153618");
$tabCouleurs[] = array("motif_brun.jpg","#F8E4D2", "#663300","#330000");

header("Content-type: text/css");
	
print "#ensemble{	
border-left:3px solid " . $tabCouleurs[$_SESSION['couleur']][3] . ";
border-right:3px solid " . $tabCouleurs[$_SESSION['couleur']][3] . ";}

#entete{
border-bottom:3px solid " . $tabCouleurs[$_SESSION['couleur']][3] . ";
background-image:url(../images/".$tabCouleurs[$_SESSION['couleur']][0].");}";
?>


Merci d'avance

Kimilijohns
Modifié par kimilijohns (24 Jul 2005 - 20:50)
Pour les sessions, j'ai un doute.

PHP crée un cookie qui contient l'identifiant de session. Mais quand le navigateur apelle une feuille de style liée, est ce qu'il renvoie le cookie au serveur ? je n'en suis pas sur Smiley confus
Alors, quel serait la solution puisque ma variable session servait à contenir la valeur du style que l'utilisateur à choisi?

S'il y a plusieur solutions, est-ce qu'il y en aurait une qui n'utilise pas les cookie (juste au cas où l'utilisateur n'accepterait pas les cookies)?
Lu,

passes une variable en GET Smiley smile


<link rel="stylesheet" type="text/css" href="css/styles_couleurs.php?couleur=x">
Il me semble que le navigateur met la feuille de style automatiquement en cache et que, pour pouvoir faire une feuille de style dynamique, il faut envoyer des headers HTTP indiquant la non-mise en cache... ça pourrait expliquer le problème.
<?php
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
?>

Modifié par Elentar (21 Jul 2005 - 01:39)