Php et Style CSS
Bonjour à tous et meilleurs voeux pour cette nouvelle année !
j'ai un soucis de style css, j'ai un choix possible avec plusieurs couleur pour l'affichage du site qui fonctionne parfaitement avec mes pages à la racine du site, mais quand je veux mettre d'autres pages à afficher dans des dossiers, tout foire ...
voici le code utilisé pour les pages à la racine du site :
<?php
if(isset($_POST['change_style']))
// On vérifie que le formulaire a été soumis
{
if(file_exists("../".$_POST['style']."style.css"))
{
// On fait un cookie d'une année de durée pour garder en mémoire le style choisi et le récupérer à la prochaine visite
setcookie('style', $_POST['style'], time()+(365*24*3600)) ;
// Si le fichier *.css existe on définit une variable $css correspondant au style choisi
$css = $_POST['style'] ;
}
}
elseif(isset($_COOKIE['style']))
// Si le formulaire n'a pas été soumis, on vérifie si le cookie style existe et si tel est le cas on définit une variable $css correspondant à ce style
{
$css = $_COOKIE['style'] ;
}
else
// Si le cookie n'existe pas et que le formulaire n'a pas été soumis, on définit une variable $css correspondant au style par défaut, ici un_style.css par exemple
{
$css = "bleu" ;
}
?>
et dans le HEAD :
<?php
echo "<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"".$css."/style.css\" />\n" ;
?>
ensuite les pages se trouve dans des sous dossiers en fait ex: /truc/machin/page.php j'ai donc modifier le code de la façon suivante dans le HEAD:
<?php
echo "<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"../..".$css."/style.css\" />\n" ;
?>
Ca fonctionne en affichage par défaut, mais si on veux changer la couleur a partir de cette page .. plus rien .. j'ai aussi essayer de modifier ce bout de code en mettant :
{
if(file_exists("../../".$_POST['style']."style.css"))
{
pour remonter les sous dossiers mais ça ne change rien. après plusieurs tests je me suis apercu que la valeur $css n'est pas récupérée, donc le chemin vers le fichier style est éronée et ne fonctionne pas, mais je n'ai toujours pas trouver pourquoi. avec une page a la racine qui fonctionne en affichant le code source j'obtient ceci :
<link rel="stylesheet" type="text/css" media="screen" href="bleu/style.css" />
et le style s'affiche quelque soit la couleur choisie. mais avec mes pages dans les sous dossiers j'obtient ceci :
<link rel="stylesheet" type="text/css" media="screen" href="/style.css" />
la variable $css n'est pas recupérée. Merci d'avande pour votre aide.
Réponses apportées à cette discussion
Bonjour,
Ton problème est super simple à résoudre. Il te suffit d'utiliser des chemins absolus dans tes balises . Donc par exemple, tu mets le chemin suivant : http://www.tondomaine.com/css/lestyle/style.css
Par contre, je vois que tu places directement $_POST['style'] dans la chaine et que tu récupères la valeur présente dans le cookie sans les filtrer... Tu ouvres une faille par injection de code HTML ou Javascript... Pense à les echapper avec htmlspecialchars().
++
en fait je ne peut pas utiliser ce système car mes fichier css son dans des rep différents, c'est pour ca que j'ai besoin de récupérer la variable $css pour lui indiquer dans quel répertoire il doit aller chercher son fichier par rapport au choix du visiteur. je sais pas si c assez clair lol ... demandez moi si besoin j'éclaircirais :)
Je vous remercie pour votre aide, j'ai reussi à résoudre mon soucis :)