jsgorre
Messages postés4Date d'inscriptionlundi 29 janvier 2007StatutMembreDernière intervention13 octobre 2008 28 janv. 2008 à 10:57
Merci MALALAM pour toutes ces remarques constructives, effectivement j'ai quelques retouches à faire.
J'en tiens compte et je reposterai le code modifié.
Merci encore
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 23 janv. 2008 à 23:31
Hello,
quelques remarques :
- tu mets une fonction dans ton for(). Fais ainsi, ton strlen() est recalculé à chaque itération ce qui ne sert à rien.
- tu fais une boucle pour chercher tes objets, que tu fous dans un tableau sur lequel tu boucles à nouveau pour les désérialiser. Pourquoi ne pas tout faire dans ta 1ère boucle ?
- plutôt que de faire tous ces parsing sur tes chaînes, il me semble plus efficace de normaliser tes sessions :
$_SESSION['OBJECTS'] => array('CLASSNAME' => 'nom_de_la_classe', 'SERIALIZED_OBJECT' => 'objet_linéarisé').
En ajoutant une dimension histoire de pouvoir avoir plusieurs instances d'une même classe (impossible dans mon exemple hein, il faut ajouter une dimension au tableau).
TheSin
Messages postés331Date d'inscriptionmardi 12 novembre 2002StatutMembreDernière intervention10 février 2009 23 janv. 2008 à 10:53
L'onglet ne le gère pas tout comme une nouvelle fenêtre car il garde le même cookie. C'est pas plus mal, sinon on pourrait pas gérer des popups pour des demandes d'accès (logon) ou d'autres choses encore que je n'ai pas imaginé (bon, je ne suis pas un fervant utilisateur de popup non plus, je vous assure).
Enfin voilà, juste pour dire que mieux vaut ça que rien, sinon d'ailleur, s'il faut se reconnecter à chaque onglet ouvert sur un site pour voir un contenu privé et protégé, on est dans le c*** ^^.
Par contre, je ne savais pas si t'avais essayé le nom de session avant le post de ton code ou apres, en espérant que ton problème soit résolu et que la méthode de CodeFalse t'aide encore mieux ;).
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 22 janv. 2008 à 23:24
De rien :)
jsgorre
Messages postés4Date d'inscriptionlundi 29 janvier 2007StatutMembreDernière intervention13 octobre 2008 22 janv. 2008 à 22:42
Non tu ne dis pas de connerie TheSin... en fait je m'en suis rendu compte moi même en effectuant quelques tests en affichant les infos de la session. J'ai donc défini le nom de session dans mon appli. Par contre j'étais surpris qu'un onglet ne gère pas une instance différente du navigateur et donc une session différente..
Merci Codefalse pour ton commentaire, en fait j'ai regardé de plus prés la fonction PHP session_set_save_handler et elle est effectivement intéressante, il faut que je regarde comment intégrer ma fonction getObjects et comme tu dis, créer l'équivalent pour les sauver.
Merci
TheSin
Messages postés331Date d'inscriptionmardi 12 novembre 2002StatutMembreDernière intervention10 février 2009 22 janv. 2008 à 21:31
Jdis ptetre une connerie, mais as-tu utilisé un nom de session différent par application Web ?
session_name ( 'NomSession' ) ;
C'est générallement quand on ne l'utilise pas qu'on se retrouve avec des sessions partagées.
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 21 janv. 2008 à 16:59
Pour ton probleme de session, tu peux utiliser la fonction session_set_save_handler, elle va te permettre de spécifier les méthodes pour tes sessions, du coup tu peux te baser sur une bdd, et tu peux spécifier comme moyen d'identification, la "base url", comme ca pour deux sites différents, tu ne mélange plus les sessions.
Ce qui est décevant pour ton code, c'est que tu propose la méthode getObject, mais pas saveObject (ou setObject ?), du coup on peux récuperer des objets d'une session précédente, mais on peux pas sauvegarder :p
28 janv. 2008 à 10:57
J'en tiens compte et je reposterai le code modifié.
Merci encore
23 janv. 2008 à 23:31
quelques remarques :
- tu mets une fonction dans ton for(). Fais ainsi, ton strlen() est recalculé à chaque itération ce qui ne sert à rien.
- tu fais une boucle pour chercher tes objets, que tu fous dans un tableau sur lequel tu boucles à nouveau pour les désérialiser. Pourquoi ne pas tout faire dans ta 1ère boucle ?
- plutôt que de faire tous ces parsing sur tes chaînes, il me semble plus efficace de normaliser tes sessions :
$_SESSION['OBJECTS'] => array('CLASSNAME' => 'nom_de_la_classe', 'SERIALIZED_OBJECT' => 'objet_linéarisé').
En ajoutant une dimension histoire de pouvoir avoir plusieurs instances d'une même classe (impossible dans mon exemple hein, il faut ajouter une dimension au tableau).
23 janv. 2008 à 10:53
Enfin voilà, juste pour dire que mieux vaut ça que rien, sinon d'ailleur, s'il faut se reconnecter à chaque onglet ouvert sur un site pour voir un contenu privé et protégé, on est dans le c*** ^^.
Par contre, je ne savais pas si t'avais essayé le nom de session avant le post de ton code ou apres, en espérant que ton problème soit résolu et que la méthode de CodeFalse t'aide encore mieux ;).
22 janv. 2008 à 23:24
22 janv. 2008 à 22:42
Merci Codefalse pour ton commentaire, en fait j'ai regardé de plus prés la fonction PHP session_set_save_handler et elle est effectivement intéressante, il faut que je regarde comment intégrer ma fonction getObjects et comme tu dis, créer l'équivalent pour les sauver.
Merci
22 janv. 2008 à 21:31
session_name ( 'NomSession' ) ;
C'est générallement quand on ne l'utilise pas qu'on se retrouve avec des sessions partagées.
21 janv. 2008 à 16:59
voir : http://fr3.php.net/session_set_save_handler
Ce qui est décevant pour ton code, c'est que tu propose la méthode getObject, mais pas saveObject (ou setObject ?), du coup on peux récuperer des objets d'une session précédente, mais on peux pas sauvegarder :p