5568 sujets

Sémantique web et HTML

Bonjour,

Voilà sur mon site j'utilise les cookies pour le style CSS (Merci à El Moustiko ;)) mais j'ai un problème ensuite pour passer la page au validateur.
Voilà le message : (j'ai enlevé l'IP)

 I got the following unexpected response when trying to retrieve <http://82.xxx.xxx.xxx/~src3b14/index.php>:

    302 Found

Please make sure you have entered the URL correctly. 

Je suppose que le problème vient du header("Location...") que je fais pour recharger la page avec le cookie modifié...
Comment faire pour contourner le problème ? je suis sur que c'est un problème courant mais je n'ai pas trouvé de réponse...

Merci. Smiley smile
Modifié le 26 Oct 2004 - 18:25
Je suppose que tu as un formulaire sur ta page index pour ton changeur de style.
A mon avis ça pose problème parce que ton formulaire pointe vers la même page, je me trompe ?

Personellement j'ai réalisé ce petit script en PHP y'a quelques temps (le JS c'est pas mon truc Smiley biggrin et je n'ai jamais eu ce problème. Mais si je cherchais à valider ma page contenant le header location j'aurais surement la même erreur, puisque c'est juste une page de redirection qui ne renvoie rien au navigateur (logique qu'il ne puisse rien valider c'est pas de l'XHTML :p)
Oui, c'est un formulaire qui est sur toute les pages du site et qui pointe effectivement sur la même page où le formulaire a été validé.

Kevin, oui les CSS sont externes.
Hein ??? tu veux dire en passant la feuille en paramètre d'url ??

déjà il faudrait mettre ip/?css=feuille1.css Et ensuite parceque ca n'a rien à faire dans l'url... l'url n'est pas faite pour ca.
Mais naaaaaaaaaaaaaan , dans le validateur, s'il veut valider ces CSS (si j'ai bien compris), et que le validateur veux pas, il a qu'à les passer une par une dans le validateur !
Ahh il veut valider les feuilles de style de son style switcher ???

Bah là oui il faut indiquer le chemin de la feuille de style

Dans mon exemple c'est un truc du style
domaine.net/nom_du_style/style.css si je me souviens bien.
je ne parle pas de valide la feuille CSS, mais ma page php.
Et je n'ai pas utilisé de javascript pour le formulaire.

Voilà le code que j'ai écris, si ça peut aider à résoudre le problème :

//si le formulaire a été soumis
if (isset($_POST[css])) {
	//sélection du theme dans la base de données
	$req=mysql_query("SELECT css_id FROM work_css WHERE css_id=".$_POST['css'], $cx) or die("Problème de CSS !<br />".mysql_error());
	$data=mysql_fetch_object($req);
	setcookie('src3b14', $data->css_id, time()+(365*24*3600));
	$css=$_COOKIE['src3b14'];
	
	if (isset($_POST[m])) 
		header("Location: ./".basename($_SERVER['PHP_SELF'])."?m=".$m);
	elseif (isset($_POST[page])) 
		header("Location: ./".basename($_SERVER['PHP_SELF'])."?page=".$page);
	else 
		header("Location: ./".basename($_SERVER['PHP_SELF']));
	exit();
}

// si le cookie existe 
if (isset($_COOKIE['src3b14'])) {
	//on initialise la valeur du cookie dans $css
	$css=$_COOKIE['src3b14'];
}
//Premiere visite : le cookie n'existe pas donc on met la valeur par défaut
else {
	$req=mysql_query("SELECT css_id FROM work_css WHERE css_default=1 LIMIT 0,1", $cx) or die("Problème de CSS !<br />".mysql_error());
	$data=mysql_fetch_object($req);
	setcookie('src3b14', $data->css_id, time()+(365*24*3600));
	
	if (isset($_POST[m])) 
		header("Location: ./".basename($_SERVER['PHP_SELF'])."?m=".$m);
	elseif (isset($_POST[page])) 
		header("Location: ./".basename($_SERVER['PHP_SELF'])."?page=".$page);
	else
		header("Location: ./".basename($_SERVER['PHP_SELF']));
	exit();
}


Je n'est pas mis l'affichage des liens des CSS et le formulaire, je ne pense pas que le problème vienne de là.
C'est un problème lier à la fonction header de php qui force le serveur à renvoyer un code 302 au lieu d'un code 200 lorsqu'on fait un "location"

Pour eviter ce problème, essaye de rajouter avant le location :
header("HTTP/1.0 200 OK");
header("location...")
Bon en fait, j'ai résolu mon problème.

Je visitais un site, normal quoi, je le ferme et mozilla me dit que le site en question veut définir un cookie (oui, je gère mes cookies moi même Smiley smile ) et là, j'ai tilté. Le site me l'a pas demandé au chargement, c'est donc qu'il y a pas eu de header("Location..."). Comme le validateur du w3c, ne prend pas en compte le header, c'est ce qu'il me fallait, donc en fait j'ai fait juste un setcookie() et j'ai mis la meme valeur pour $css.

Le cookie sera pris en compte apres changement de page, et le style est bien affiché sur la première page Smiley smile

Merci quand même.
Modifié le 27 Oct 2004 - 03:30