Php et Style CSS

Rechercher

Php et Style CSS

Par GhostShell  -  3 reponses  -  Le 06/01/2008 23:55  -  Editer  - 

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

Par Emacs  -  Le 07/01/2008 08:31  -  Haut de page  - 

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().

++

 
Par GhostShell  -  Le 07/01/2008 10:02  -  Haut de page  - 

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 :)

 
Par GhostShell  -  Le 07/01/2008 11:31  -  Haut de page  - 

Je vous remercie pour votre aide, j'ai reussi à résoudre mon soucis :)

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |