8791 sujets

Développement web côté serveur, CMS

Bonjour tout le monde,

Je suis en train de bosser sur un site qui aura une version Française et une version Corse.

Pour définir la langue je compte utiliser les cookies mais ça ne marche absolument pas et je ne comprend pas pourquoi Smiley ohwell (j'ai testé en local et sur un domaine {free.fr})

Tout d'abord sur chaque page de mon site en haut de page je met ça :


<?php
session_start();
$expire = 365*24*3600; 

if(isset($_COOKIE['isulaPeintureLang']))
{
	if($_COOKIE["isulaPeintureLang"]=="fr")
	{
		include('lang/fr-lang.php');
	}
	elseif($_COOKIE["isulaPeintureLang"]=="co")
	{
		include('lang/co-lang.php');
	}
}
else
{
	include('lang/fr-lang.php');
}
?> 


Ensuite pour changer la langue j'execute le script switchLang.php?type=fr
et voici le code de ce script :


<?php
$expire = 365*24*3600; 
if(isset($_GET["lang"]) && !empty($_GET['lang']))
{
	setcookie("isulaPeintureLang", $_GET["lang"], time()+$expire, '/');
}
echo '<script language="javascript" type="text/javascript">window.location.replace("'.$_SERVER['HTTP_REFERER'].'")</script>';
?>


Mais ca ne marche pas, d'ailleurs le $_COOKIE['isulaPeintureLang'] donne une erreur :s


Que dois-je faire ?

merci
Salut,

à quoi sert la ligne $expire = 365*24*3600; dans le premier script ?

Sinon l'écriture du cookie me semble correcte mais quelle drôle d'idée de vouloir faire une redirection JavaScript alors que la fonction PHP header sert à ça Smiley langue :
<?php
if(!empty($_GET['lang']))
{
	$expire = 365*24*3600; 
	setcookie("isulaPeintureLang", $_GET["lang"], time()+$expire, '/');
	header("Location: mapage.php");
}
?>

Par ailleurs il ne faut pas utiliser $_SERVER['HTTP_REFERER'] car cette variable n'est pas toujours alimentée. Si tu ne rediriges pas toujours sur la même page (en gros si ton site est statique et pas dynamique) il suffit de passer la page qui appelle le script en paramètre et de la récupérer en GET également. Ce qui donne des liens sous la forme :
echo '<a href="switchLang.php?type=fr&amp;referer='.basename($_SERVER['PHP_SELF']).'">langue française</a>';
Oui pour le premier script c'etait un premier test et j'avais oublié de virer la variable expire, sinon pour le header c'est vrai my mistake Smiley langue

mais ca ne règle pas mon problème principale Smiley cligne
Avant de te dire ça :
Heyoan a écrit :

Sinon l'écriture du cookie me semble correcte
j'ai bien sûr testé... et mon cookie était bel et bien créé ! Smiley murf
oO

Chez moi ca ne marche pas et je ne comprend pas pourquoi (en local et sur le web)

J'ai firefox (et j'accepte les cookies)
Ashraam a écrit :

J'ai firefox (et j'accepte les cookies)
Si tu as fait des tests et supprimé le cookie depuis Firefox le site est gardé en mémoire (que ce soit en local ou en ligne) : il faut regarder dans Options / Vie privée / Exceptions.

Il existe plusieurs extensions FF pour gérer les cookies mais je te conseille Web Developer qui te servira à plein d'autres choses.


Edit: quoi qu'il en soit il n'y a pas 50 façons d'écrire un cookie. Si tu fais ce qui est expliqué ici et que ça ne marche pas il faut chercher ailleurs pourquoi. Smiley cligne
Modifié par Heyoan (23 Jan 2009 - 14:52)
Toujours pareil, ca ne marche pas, avec Web Developper (merci pour l'appli) je vois bien qu'il y a un cookie de session qui est crée mais pas le fameux isulaPeintureLang du script
d'ailleurs quand j'enleve le session_start(); il n'y a plus aucun cookie (meme quand je lance le script switchLang.php?lang=xx
Tu as essayé de debugger ? Par exemple en rajoutant print_r($_GET); dans switchLang.php ?

Au passage je viens de voir que tu faisais dans ton premier post switchLang.php?type=fr au lieu de switchLang.php?lang=fr
Modifié par Heyoan (23 Jan 2009 - 15:07)
Et le résultat de ça ?

Heyoan a écrit :
Tu as essayé de debugger ? Par exemple en rajoutant print_r($_GET); dans switchLang.php ?

Modifié par Heyoan (23 Jan 2009 - 22:21)