cookies , redirections

Petit nouveau ! | 6 Messages

21 août 2008, 09:48

Salut , c'est mon premier post et je commence en php ( je viens du C ),

Je sais à peu près comment utiliser des cookies , je fais aussi du flash et les cookies et flash c'est pas possible ( créer des cookies sous actionscript c'est pas vraiment des cookies ). Tout ce que je peu faire c'est , lorsque quelqu'un appuie sur un bouton en flash , l'envoyer vers un script php avec la langue en GET, (ou en post peu importe ) genre "/script/lang.php?lg=fr"
Mais voilà je sais faire les redirections mais ça ne marche pas :
<?php
switch ($_GET['lg']) {
case "fr":
setcookie('lang','fr',-1);
header(" Location : /index.php");
break;
//ect...
}
?>
Pourquoi il veut pas ? Je me retrouve sur lang.php dans le navigateur et il ne se passe rien je suis obliger d'aller sur l'index manuellement , bien sur le cookie est présent .
Merci d'avance :)

Mammouth du PHP | 1353 Messages

21 août 2008, 10:10

Ce code constitue-t-il l'ensemble de ta page ?

La fonction header est assez particulière, il ne faut qu'aucun affichage ou commentaires html n'ait été mis avant de l'utiliser. Cela doit vraiment etre les toutes premieres lignes de ta page.

Les erreurs php sont elles activées ? Si oui en as tu une ?

Essaye aussi de vérifier l'encodage de ta page, et de choisir UTF-8 sans BOM si tu le peux.

Enfin, essaye simplement avec le code écrit comme cela mais j y crois pas trop :
<?php 
switch ($_GET['lg']) { 
case "fr": 
setcookie('lang','fr',-1); 
header("Location: index.php"); 
break; 
//ect... 
} 
?>
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Petit nouveau ! | 6 Messages

21 août 2008, 10:20

oui le code de l'ensemble du script lang.php ( remplace le ect par des case 'es' ou 'en' ) il n'y a aucune balise autre , ca commence en <?php et fini en ?> , index.php est par contre au format xhtml , donc avec des balises dès le debut , mais il n'y a aucune redirection dans ce dernier . Bien sûr ton code ne change rien , mais merci , le premier gars qui me répond ça vient du 92 :lol:

En plus je viens de tester un simple
<?php header('Location : http://www.localhost'); exit(); ?>
dans un test.php ça ne marche pas . Quelle pourrai être les raison du non-fonctionnement de cette fonction ? ( à part l'encodage , des balises (x)html mises avant , un espace entre le début de la page et '<?php' , du code executé après la fonction header et une autre fonction header )

Je teste tout ça sur xampp , c'est peut être la cause du problème ? Il y a-t-il une autre fonction pour rediriger ?

Sinon je vais être obliger de faire un get sur l'index genre index.php?lang=fr ensuite mettre au début du code de l'index
<?php
if (isset($_GET['lang'])) {
setcookie('lg',$_GET['lang'],-1);
}
?>
//code du html

//affichage des données
<?php if (isset($_GET['lang'])) {
//traduction selon le get
} elseif (isset($_COOKIE['lg'])) {
//traduction selon le cookie
} ?>
Mais c'est pas une solution , d'ailleurs si vous voyez une meilleure astuce dite le moi :) mais je sens que mon problème va dégringoler au fin fond de ce forum :lol: