Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
880 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  perdu dans les cookies

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

perdu dans les cookies

n°886284
attentio
Posté le 30-10-2004 à 03:06:08  profilanswer
 

bonjour, je suis en train de faire un site multilingue, mais je ne comprends pas bien.j'ai choisi la methode des cookies.chaque page appelle un fichier decide.php qui lui meme appelle des glossaires en.php et fr.php

Code :
  1. //decide.php
  2. j'ai fait ceci mais ca ne marche pas :(
  3. [code]if(isset($_GET['lang']))
  4. {
  5. if ($_GET['lang']=='fr'){
  6. $lang='fr';
  7. }
  8. else if ($_GET['lang']=='en'){
  9. $lang='en';
  10. }
  11. else $lang='fr';
  12. setcookie("lang","",0);
  13. $expire = 365*24*3600; 
  14. setcookie("lang", $lang, time() + $expire);
  15. }
  16. if(isset($_COOKIE['lang'])){
  17. setcookie("lang","",0);
  18. $expire = 365*24*3600; 
  19. setcookie("lang", $lang, time() + $expire);
  20. }
  21. if ($lang=='en') {         
  22.  include('en.php');
  23.  }
  24. else include('fr.php');


 
petites precisions
en fait j'ai un page index qui permet de choisir ma langue francais/english
et on arrive en GET sur page1.php  
soit page1.php?lang=en soit page1.php?lang=fr
donc il faudrait que cette variable GET se transforme en cookie pour que je puisse apres la recupere dans toutes les autres pages (qui elles n'ont pas de get).
 
merci de votre aide   :)


Message édité par attentio le 24-03-2005 à 21:01:53

---------------
L'ordinateur a de la mémoire mais aucun souvenir ...
mood
Publicité
Posté le 30-10-2004 à 03:06:08  profilanswer
 

n°886313
Profil sup​primé
Posté le 30-10-2004 à 10:30:11  answer
 

bien complexe pour ecrire un cookie ta procédure :)

Code :
  1. <?
  2. $lang = (isset($_GET['lang'])) ? $_GET['lang'] :  $_COOKIE['lang'];
  3. if ($lang) {
  4.   $expire = 365*24*3600;
  5.   setcookie("lang", $lang, time() + $expire,'/');
  6.   echo 'cookie ecrit';
  7. }
  8. switch($lang) {
  9.   case 'en':
  10.     echo('en.php');
  11.     break;
  12.   case 'fr':
  13.   default:
  14.     echo('fr.php');
  15.     break;
  16. }
  17. ?>

n°886357
attentio
Posté le 30-10-2004 à 12:38:47  profilanswer
 

super merci !!!
mais j'ai encore un ptit pb, voila le cookie de cree bien, mais dans mon echo $_COOKIE['lang'] il affiche la langue precedente cad a dire que si j'ai selectionné english puis je veux selectionner le francais il va falloir que je clique 2 fois de suite sur francais sinon au premier au premiere 'clique' il reste sur english (pourtant mon cookie suit)... etrange,nan?

Code :
  1. @$lang = (isset($_GET['lang'])) ? $_GET['lang'] :  $_COOKIE['lang'];
  2. if ($lang) { 
  3.   $expire = 365*24*3600;
  4.   setcookie("lang", $lang, time() + $expire,'/'); 
  5.   echo 'cookie ecrit '.$_COOKIE['lang'];
  6. }
  7. switch($lang) {
  8.   case 'en':
  9.     include('en.php');
  10.     break;   
  11.   case 'fr':
  12.   default:
  13.     include('fr.php');
  14.     break;
  15. }


 
merci de votre aide

n°886367
Rainbow_Ef​reet
Posté le 30-10-2004 à 12:49:32  profilanswer
 

Le cookie est envoyé dans les header donc c'est normal que tu ne puisse pas le récupérer au premier passage tu ne pe pas l'envoyer et faire en sorte que le client te l'envoi en meme temps ...
Donc il fo qu'au moment de la depose tu initialise la variable $_cookie['lang'] toi meme, mais tu n'as besoin de le faire que a la depose apres le client t'enverra la variable lui meme ...
Voila j'espere t'avoir aidé

n°886412
attentio
Posté le 30-10-2004 à 13:22:38  profilanswer
 

en faite, j'ai pas tres bien compris  :ange:  
j'ai fait comme ca

Code :
  1. if ($lang) {
  2. setcookie("lang","",0);
  3.   $expire = 365*24*3600;
  4.   setcookie("lang", $lang, time() + $expire,'/'); 
  5.   echo 'cookie ecrit '.$_COOKIE['lang'];
  6. }


mais ca change rien!!
 
merci de votre aide :)

n°886418
Rainbow_Ef​reet
Posté le 30-10-2004 à 13:35:05  profilanswer
 

Code :
  1. @$lang = (isset($_GET['lang'])) ? $_GET['lang'] :  $_COOKIE['lang']; 
  2. if ($lang) { 
  3.   $expire = 365*24*3600; 
  4.   setcookie("lang", $lang, time() + $expire,'/'); //MOMENT DE LA DEPOSE  
  5.   $_COOKIE['lang'] = $lang; // INITIALISATION MANUEL OBLIGATOIRE LA 1er fois
  6. echo 'cookie ecrit '.$_COOKIE['lang']; 
  7. }


Message édité par Rainbow_Efreet le 30-10-2004 à 13:35:33
n°886425
attentio
Posté le 30-10-2004 à 13:53:48  profilanswer
 

:bounce: cool merci !
juste une derniere question comment faire pour que si $_GET['lang']n'est pas declarée (si l'utilisateur arrive par une autre page que la page1.php, la seul avec du get['lang'])alors on essaye de reconnaitre la langue du navigateur et si la langue n'est ni du francais ni de l'anglais alors $lang=fr
 
merci encore

n°886439
masklinn
í dag viðrar vel til loftárása
Posté le 30-10-2004 à 14:47:31  profilanswer
 

C'est ptet une proposition débile, mais...

Code :
  1. if(!isset($_COOKIE['lang']))
  2.     //langue non déclarée
  3. else
  4.     //langue déclarée


ca marche pas?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°886450
attentio
Posté le 30-10-2004 à 15:14:40  profilanswer
 

oui t'as raison ...je vais faire au plus simple

n°886454
Profil sup​primé
Posté le 30-10-2004 à 15:18:20  answer
 

attentio a écrit :

en faite, j'ai pas tres bien compris  :ange:  
j'ai fait comme ca

Code :
  1. if ($lang) {
  2. setcookie("lang","",0);
  3.   $expire = 365*24*3600;
  4.   setcookie("lang", $lang, time() + $expire,'/'); 
  5.   echo 'cookie ecrit '.$_COOKIE['lang'];
  6. }


mais ca change rien!!
 
merci de votre aide :)


faut que tu fasse une redirection vers la page utilisant le cookie : ajoute header('location : tonfichier.php'); apres le setcookie
ton echo 'cookie...' tu le mets en dehors.
 
que j'explique :)
Quand tu recupere la valeur de $lang la premiere fois par l'url, c'est via $_GET,tu ecris en meme temps la variable dans le cookie via setcookie
 
donc tu ne peux accéder directement à la variable du cookie via $_COOKIE sans réactualiser la page...sauf si tu utilise la ligne supplémentaire de rainbow_efreet par laquelle tu affecte à $_COOKIE la valeur de lang directement, ce qui si je ne me trompe pas evite la redirection, mais d'un autre coté $_COOKIE est normalement utilisé pour lire le contenu d'un cookie, pas pour ecrire dedans, c'est donc comme si tu ecrivais dans un simple tableau :)
 
 


Message édité par Profil supprimé le 30-10-2004 à 15:29:13
mood
Publicité
Posté le 30-10-2004 à 15:18:20  profilanswer
 

n°886486
Rainbow_Ef​reet
Posté le 30-10-2004 à 15:55:43  profilanswer
 

Je confirme la reponse de spike une redirection header suivi d'un exit() sera bcp plus propre que la ligne que j'ai rajouté :)
cela permettra aussi de VRAIMENT voir si le cookie a été déposé car avec la ligne supplémentaire on verra toujours la valeur que l'on a voulu deposé mais pas la valeur réel du cookie


Message édité par Rainbow_Efreet le 30-10-2004 à 15:56:51

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  perdu dans les cookies

 

Sujets relatifs
Validation w3c et cookiesCookies
Tp de Java : Réflexivité... je suis perdujscrollpane je suis perdu
Sessions sans cookiesCookies qui marchent seulement en local!
lire cookies avc delphi[INTERBASE] Mot de passe Sysdba perdu : comment faire ?
[Concours n°4] A la recherche du bit perdu...Perdu ds la base de données...
Plus de sujets relatifs à : perdu dans les cookies


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR