Cookies et sessions en même temps

Cookies et sessions en même temps - PHP - Programmation

Marsh Posté le 06-06-2006 à 16:29:04    

Bonjour,
Voilà un problème sur lequel je me tire les cheveux depuis plusieurs jours. J'explique :
 
Mon site est un site de vente en ligne. Le panier de commande est actuellement géré par des sessions. Le problème, c'est que les utilisateurs d'aol n'arrive pas à créer des sessions sur mon site, et ce depuis que je suis passé sur ovh (avant ça semblait fonctionner correctement). Je suis en contact avec ovh mais j'ai peur qu'ils ne puissent rien pour moi.
 
J'ai donc décidé de passer par des cookies. Et là, deuxième problème : Sous Mozilla ça fonctionne très bien mais sous IE et AOL explorer, des informations sont perdues. Le problème semble être que alors que mozilla sépare bien chaque cookie créé (un cookie par donnée), IE semble tout mettre dans une liste de cookies, dont le nombre est limité à 11. Or pour chaque produit, je crées 5 cookies + 4 pour les infos de l'utilisateur et on arrive vite à la limite (dès qu'on achète + de 2 produits).
 
Sachant que les utilisateurs AOL sont en minorité et que la majorité des client achètent un seul produit, je me suis dis que ce problème de cookie n'en serait pas vraiment un si il n'y a que les clients AOL qui l'utilise. J'ai donc décidé de combiner les deux :
 
Ecriture des cookies/sessions :

Code :
  1. function enr_tab_cookie_session( $nom , $contenu )
  2.   {
  3.     $_SESSION[$nom] = $contenu;
  4.     if( !empty( $contenu ) )
  5.       foreach( $contenu as $name => $value ) {
  6.         setcookie( $nom.'cookie['.$name.']', $value, time()+60*20, '/' );
  7.       }   
  8.   }


 
Lecture des cookies/sessions :

Code :
  1. function lecture_tab_cookie_session( $nom ) {
  2.     if (isset($_SESSION[$nom])) {
  3.       foreach( $_SESSION[$nom] as $name => $value )
  4.         $res[$name] = $value;
  5.       return $res;
  6.       }
  7.     else
  8.       if( isset( $_COOKIE[$nom.'cookie'] ) )
  9.         {
  10.           foreach( $_COOKIE[$nom.'cookie'] as $name => $value )
  11.           {
  12.             $res[$name] = $value;
  13.           }
  14.         }
  15.     return $res; 
  16.   }


 
On enregistre les données à la fois dans un cookie et une session, et quand on lit les données, si la session existe (c'est à dire, si le client gère les sessions), on donne en résultat les infos de session et dans le cas opposé, les infos du cookie.
 
Malheureusement, ça ne fonctionne toujours pas et je ne vois pas du tout pourquoi. Il semblerait qu'il n'est pas du tout évident de gérer à la fois cookies et sessions, j'ai l'impression que quand je lis les données, le tableau qui me revient en résultat est toujours le cookie et jamais les infos contenues dans la session.
 
Si vous avez une idée ça me serait d'une grande aide  :hello:

Reply

Marsh Posté le 06-06-2006 à 16:29:04   

Reply

Marsh Posté le 06-06-2006 à 17:20:01    

Fausse alerte, j'ai testé ces 2 fonctions à part et elles fonctionnent. L'erreur vient sûrement d'ailleurs dans le code. Ce qui ne m'arrange pas vraiment car je ne sais pas d'où...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed