Perte de session avec AOL

Perte de session avec AOL - PHP - Programmation

Marsh Posté le 30-06-2006 à 19:26:29    

Bonjour à tous,
 
j'ai un soucis : mes sessions sont perdues avec le navigateur AOL (8.0 ou 9.0).
 
j'ai beaucoup cherché sans trouver de réponse ouverte.
par contre je suis tombé sur les explications d'AOL himself : http://webmaster.aol.fr/sessions.html...
 
le problème est le suivant : avec les répartiteurs de charge (load balancers qui équivalent à un proxy changeant l'adresse IP à chaque page) le numéro de session ne peut pas être retrouvé (puisqu'il est construit à partir de l'IP qui change).
 
la solution : définir soit même l'ID de session sans se servir de l'IP (puisqu'elle change de page en page). Et enregistrer cette ID manuelle dans un cookie.
 
ma mise en oeuvre : remplacer un simple session_start() par ça :

Code :
  1. if (!isset($_COOKIE['idSession'])) {
  2.    //
  3.    // Si cookie d'ID absent -> nouvelle ID de session
  4.    //
  5.    srand ((float) microtime() * 9999999) ;
  6.    $user_ip = rand(0,9999999) ;
  7.    $idSession = md5($user_ip.time()) ;
  8. } else {
  9.    //
  10.    // Sinon récupère l'ID de session dans le cookie
  11.    //
  12.    $idSession = $_COOKIE['idSession'] ;
  13. }
  14. //
  15. // démarrage/reprise de la session
  16. //
  17. session_name("maSession" ) ;
  18. session_id($idSession) ;
  19. //
  20. // (re)écriture du cookie d'id session (pour étendre sa durée de vie)
  21. //
  22. setcookie("maSession", $idSession, (time()+12800), "/", ".monDomaine.com", 0) ;


 
Hé bin ça marche pas !  :cry:  
 
Pourtant, j'ai regardé et les cookies de session ont bien le même identifiant, même quand mon panier se vide / rerempli au hasard des load balancer....
 
Alors si quelqu'un à une idée... je suis preneur
 
Merci d'avance.
Cordialement, Giboo.

Reply

Marsh Posté le 30-06-2006 à 19:26:29   

Reply

Marsh Posté le 30-06-2006 à 20:35:17    

Banni AOL. Adopte Firefox et tu veras la vie en rose ;)
 
PS : Une ip ne peut pas changer de page en page lol ou alors t'es souvent déconnecté

Message cité 1 fois
Message édité par AlphaZone le 30-06-2006 à 20:36:21
Reply

Marsh Posté le 30-06-2006 à 20:35:27    

giboo a écrit :

Bonjour à tous,
 
j'ai un soucis : mes sessions sont perdues avec le navigateur AOL (8.0 ou 9.0).
 
j'ai beaucoup cherché sans trouver de réponse ouverte.
par contre je suis tombé sur les explications d'AOL himself : http://webmaster.aol.fr/sessions.html...
 
le problème est le suivant : avec les répartiteurs de charge (load balancers qui équivalent à un proxy changeant l'adresse IP à chaque page) le numéro de session ne peut pas être retrouvé (puisqu'il est construit à partir de l'IP qui change).
 
la solution : définir soit même l'ID de session sans se servir de l'IP (puisqu'elle change de page en page). Et enregistrer cette ID manuelle dans un cookie.
 
ma mise en oeuvre : remplacer un simple session_start() par ça :

Code :
  1. if (!isset($_COOKIE['idSession'])) {
  2.    //
  3.    // Si cookie d'ID absent -> nouvelle ID de session
  4.    //
  5.    srand ((float) microtime() * 9999999) ;
  6.    $user_ip = rand(0,9999999) ;
  7.    $idSession = md5($user_ip.time()) ;
  8. } else {
  9.    //
  10.    // Sinon récupère l'ID de session dans le cookie
  11.    //
  12.    $idSession = $_COOKIE['idSession'] ;
  13. }
  14. //
  15. // démarrage/reprise de la session
  16. //
  17. session_name("maSession" ) ;
  18. session_id($idSession) ;
  19. //
  20. // (re)écriture du cookie d'id session (pour étendre sa durée de vie)
  21. //
  22. setcookie("maSession", $idSession, (time()+12800), "/", ".monDomaine.com", 0) ;


 
Hé bin ça marche pas !  :cry:  
 
Pourtant, j'ai regardé et les cookies de session ont bien le même identifiant, même quand mon panier se vide / rerempli au hasard des load balancer....
 
Alors si quelqu'un à une idée... je suis preneur
 
Merci d'avance.
Cordialement, Giboo.


 
Un peu de patience, je suis justement en train de terminer mon système perso de sessions que je vais rendre public ici dans maximum 24/48 heures.  :hello:  

Reply

Marsh Posté le 30-06-2006 à 20:36:46    

AlphaZone a écrit :

Banni AOL. Adopte Firefox et tu veras la vie en rose ;)


 
Ce que j'ai compris, c'est qu'il veut créer des sites compatibles avec le navigateur d'AOL. Si ça se trouve il a un client à la con qui refuse de surfer sur autre chose. [:spamafote] ça c'est déjà vu.  

Reply

Marsh Posté le 30-06-2006 à 21:35:23    

Si si l ip peut changer de page en page selon ce que les proxy décident de faire. Je parle juste de possibilité ( je connais pas AOL mais leur réputation est plus que mauvaise dans le monde des webmasters ).
 
Dans ton cas la solution la plus simple est le cookie.
 
Voici un algo exemple:
 
1) l utilisateur arrive sur ton site
2) tu lui met un cookie avec des valeurs uniques
3) l utilisateur revient avec une ip differente ( son id n est plus valable)
4) tu lis le cookie et l id qui va avec
5) tu cherches dans table de hash cet identifiant
6) tu lui reassignes la session correcte
 
Certains diront que transmettre un id de session dans un cookie est de la folie. Si tu es parmi eux alors soit tu crypte, soit tu utilises un token.
 
Il faut que tu cree ton propre session handler.
 
bon courage :)
 
PS: Si j etais toi je laisserais tomber AOL et les utilisateurs qui vont avec.

Reply

Marsh Posté le 30-06-2006 à 21:42:02    

supermofo a écrit :


Certains diront que transmettre un id de session dans un cookie est de la folie. Si tu es parmi eux alors soit tu crypte, soit tu utilises un token.


 
C'est plutôt le mettre dans l'adresse qui comporte plus de risque, mais bon... De toutes manières, aucun système de session n'est infaillible à partir du moment où on peut de toutes manières passer derrière qqu et chopper son identifiant de session si on a la main sur le poste régulièrement et la possibilité de sauvegarder les cookies, ou les adresses. [:spamafote]
 
C'est aux utilisateurs de se déconnecter. [:spamafote] Le problème n°1, c'est les utilisateurs qui oublient de fermetr la session dans les café internet ou chez un pote.
 
NB : crypter l'ID de session ne servira strictement à rien. (suffit de réfléchir deux secondes pour s'en convaincre).

Reply

Marsh Posté le 30-06-2006 à 22:10:31    

Oui j avoue aucune fonctions bijectives ne sécurise un id de session à partir du moment ou tu stockes chez l'utilisateur.
 
Je me rappelle d'un webmaster qui mettait une penalité aux utilisateurs qui ne fermait pas leurs sessions correctement.
En gros impossible de se reconnecter pour un temps arbitraire.
 
Comment vont le prendre les utilisateurs ?  
 
Perso je pense que le problème vient des innombrables script PHP pret à installer. Mais en meme temps cela protege les codes persos :s
 
Jusqu'a preuve du contraire , je pense que travailler avec les cookies client est une mauvaise méthode.  
OK Ebay et ci tournent avec les cookie, chacuns ses choix.
 
Maintenant fermer un onglet de firefox ne detruit pas le cookie serveur, cool firefox non ?
 
 
Le pauvre utilisateur AOL est damné ( au passage :) )

Reply

Sujets relatifs:

Leave a Replay

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