Aller au contenu

[resolu]Styleswitcher


doomer2

Sujets conseillés

Voici mon code de mon header :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Site en CSS</title>
<meta name="keywords" content="essai"/>
<meta name="description" content="A travers ce site validé W3C WAI AAA, accessibilité du Net"/>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<meta name="author" content="webmaster"/>
<meta name="robots" content="index, follow"/>
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="cache-control" content="no-cache" />
<link rel="Shortcut Icon" href="favicon.ico" type="image/x-icon" />

<?php
if(isset($_POST['change_style']))
// On vérifie que le formulaire a été soumis
{
if(file_exists("./".$_POST['style']."/style.css"))
// Si le fichier *.css existe on écrit la ligne d'appel de cette feuille de style
{
 echo "  <link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"".$_POST['style']."/style.css\" />\n";
 setcookie('style', $_POST['style'], time()+(365*24*3600));
 // 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
}
}
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 écrit la ligne d'appel de cette feuille de style
{
echo "  <link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"".$_COOKIE['style']."/style.css\" />\n";
}
else
// Si le cookie n'existe pas et que le formulaire n'a pas été soumis, on écrit la ligne d'appel à une feuille de style par défaut, ici un_style.css par exemple
{
echo "  <link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"un_style/style.css\" />\n";
}
?>
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://dubcl.free.fr/actu.xml"/>
<link rel="home" title="Accueil" href="http://dubcl.free.fr" />
<link rel="prev" title="Titre de la page précédente" href="http://dubcl.free.fr" />
<link rel="next" title="Titre de la page suivante" href="http://dubcl.free.fr" />
<script language="JavaScript1.2" type="text/javascript" src="switcher/script.js"></script>
<script language="JavaScript1.2" src="switcher/styleswitcher.js" type="text/javascript" ></script>
<style type="text/css">
_AT_import url("css/orange.css");
</style>

</head>

Puis l'erreur qui apparait :

Warning: Cannot modify header information - headers already sent by (output started at /var/www/free.fr/b/7/dubcl/accueil1.php:7) in /var/www/free.fr/b/7/dubcl/accueil1.php on line 24

En sachant que j'ai bien insérer mon formulaire permettant de choisir mon style.

En espérant avoir été clair, je souhaiterais savoir d'où vient ce probléme ?

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

Hmm c'est zarb, il n'y a aucun header PHP dans la page :s

Sinon tu as 2 fois la ligne

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Ta déclaration de scritp JavaScript n'est pas correcte

<script language="JavaScript1.2" type="text/javascript" src="switcher/script.js"></script>
<script language="JavaScript1.2" src="switcher/styleswitcher.js" type="text/javascript" ></script>

Il n'y a pas besoin de "language"

<script type="text/javascript" src="switcher/script.js"></script>
<script type="text/javascript" src="switcher/styleswitcher.js"></script>

Et enfin, le script de style swticher utilise la balise <link> pour faire appel à la feuille de style et toi tu utilises la propriété CSS _AT_import, donc il faut que tu saches que les 2 styles (<link> et _AT_import) seront présent, si tu ne veux qu'un seul des 2 ou tu modifies le script PHP pour utiliser _AT_import, ou tu utilises <link> pour ton appel de feuille de style.

Pour l'erreur PHP, je laisse les gens qui s'y connaissent, parceque le script que j'ai fait sur le tuto fonctionne impec.

http://elmoustikoblog.net/tutoriels/php/style_switcher/ (et l'exemple de mise en oeuvre : http://elmoustikoblog.net/tutoriels/bac_sable/ )

Lien vers le commentaire
Partager sur d’autres sites

En sachant que ma page utilise une feuille de style orange.css et qu'il existe des feuilles de style pour les polices dans un repertoire.

Car si je retire mon _AT_import ...., alors ma page apparait sans feuille de style !!

Quel peut être un modele de header integrant ce script styleswitcher ?

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

Salut doomer2,

La ligne:

setcookie('style', $_POST['style'], time()+(365*24*3600));

envoie un cookie alors que tu as déjà envoyé des caractères vers le navigateur. Cela ne peut donc pas fonctionner ;)

Dan

Lien vers le commentaire
Partager sur d’autres sites

Il ne faut pas forcément la supprimer, simplement envoyer le cookie avant tout autre caractère (même un espace). :lol:

Dans ce cas, il faut que tu gères les erreurs pour t'assurer que le cookie soit la première entête envoyée.

Dan

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