doomer2 Posté 20 Novembre 2004 Posté 20 Novembre 2004 (modifié) 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" /><?phpif(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é 20 Novembre 2004 par doomer2
ElMoustiko Posté 20 Novembre 2004 Posté 20 Novembre 2004 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/ )
Compte supprimé Posté 20 Novembre 2004 Posté 20 Novembre 2004 Il faut envoyer les cookies (comme le header) avant tout appel au navigateur....
doomer2 Posté 20 Novembre 2004 Auteur Posté 20 Novembre 2004 (modifié) 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é 20 Novembre 2004 par doomer2
Dan Posté 20 Novembre 2004 Posté 20 Novembre 2004 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
doomer2 Posté 20 Novembre 2004 Auteur Posté 20 Novembre 2004 (modifié) C exact en supprimant cette ligne, il est vrai que maintenant cela fontionne ;-) Modifié 20 Novembre 2004 par doomer2
Dan Posté 20 Novembre 2004 Posté 20 Novembre 2004 Il ne faut pas forcément la supprimer, simplement envoyer le cookie avant tout autre caractère (même un espace). 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
doomer2 Posté 20 Novembre 2004 Auteur Posté 20 Novembre 2004 Oui c vrai mais je ne suis pas l'un des grands spécialistes PHP et je débute seulement ;-)
Compte supprimé Posté 20 Novembre 2004 Posté 20 Novembre 2004 tu supprime ça : setcookie('style', $_POST['style'], time()+(365*24*3600)); et tu rajoutes ça au début du code : <?phpif(file_exists("./".$_POST['style']."/style.css")) setcookie('style', $_POST['style'], time()+(365*24*3600));?>
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant