2010-05-05 16 views
0

Quel est le meilleur moyen d'obtenir l'identifiant de la session actuelle des visiteurs dans Kohana v3? session_id() ne semble pas fonctionner et ne renvoie que null pour moi ..Le meilleur moyen d'obtenir l'identifiant de session dans Kohana 3?

En ce moment Im en utilisant cookie::get('session'), mais cela ne fonctionne pas la première fois que vous accédez au site, ce que je dois faire.

Je sais que vous pourriez faire $this->session->id() dans Kohana v2, mais cela ne semble pas exister dans KO3 ...

Merci

Répondre

4

Typiquement, vous utilisez l'un de ces 3 types de session: Natif, Cookie, Base de données.

Pour cookie, je crois que vous n'avez pas d'ID de session. Même si vous appelez Session :: instance() -> regenerate() lorsque vous utilisez cookie comme type de session, il ne retournera que NULL. Pour natif, vous devriez pouvoir obtenir l'ID lors de la génération par Session :: instance() -> regenerate() qui retourne l'identifiant de la session.

Pour la base de données, Session_Database a protégé $ _session_id où l'ID de session est stocké. Vous pouvez étendre cette classe et écrire votre propre getter.

Espérons que ça aide.

0

De la recherche à la source sur GitHub, je ne peux pas sembler trouver une méthode pour retourner l'identifiant.

Cependant, session_id() est utilisé pour native driver, donc peut-être devrait fonctionner dans votre cas.

Peut-être que si vous appelez session_regenerate_id() en premier?

0

Si vous utilisez le pilote de base de données, le cookie conservera l'ID de session.

D'autre part, il semble qu'il n'y ait pas de moyen direct d'obtenir l'identifiant de session. Comme suggéré par @SyaZ, vous devez étendre la classe de session et écrire votre propre méthode getter.

4

Kohana ont classe wrapper pour les sessions. Cette classe s'appelle Session. Kohana permet plusieurs façons de stocker des données de session en utilisant plusieurs pilotes tels que memcached. J'utilise de manière native pour stocker les données de session, qui est par défaut si vous ne faites pas de changements de configuration via config/session.php J'ai regardé code kohana pour la session native et a constaté que cela donnera l'identifiant de session

Session::instance()->id(); 

Ca marche pour moi. espérons que cela fonctionne pour vous aussi!

+0

Pour améliorer la qualité de votre message, veuillez indiquer comment/pourquoi votre réponse résoudra le problème. –

+0

Merci. J'ai expliqué. – hridayesh