2010-11-17 6 views
2

J'utilise Codeigniter 1.7.2 avec la bibliothèque OBsession pour gérer les sessions et les stocker dans une base de données. L'application sur laquelle je travaille consiste en un domaine (celui avec CI) qui agit comme un service (je ne sais pas si c'est la bonne terminologie). Les autres sites incluent un fichier JavaScript de ce domaine et, à partir de là, font un appel AJAX au domaine CI. Si le site n'a pas d'identifiant de session, le domaine CI renvoie celui créé à partir de cet appel, puis le JS sur le site définit un cookie avec cet ID de session. Dès lors, si le site effectue des appels au domaine CI, il inclut cet identifiant de session afin de s'identifier.PHP créant une nouvelle session pour chaque chargement de page

Cela fonctionne sur tous les autres navigateurs (versions Mac et PC) à l'exception de Safari et de tous les explorateurs Internet. Dans Firefox par exemple, je peux voir l'identifiant de la session initiale dans le cookie client et dans la base de données et je peux faire autant d'appels que je veux et autant de rafraîchissements de page et il a toujours le même identifiant dans le cookie et la base de données . Pour Safari, à chaque rafraîchissement de page, je peux voir de nouvelles sessions ajoutées à ma table de session.

Des idées sur ce qui se passe ici?

+0

Vous savez que la bibliothèque de sessions de CI semble couvrir tout dans OBsession? pourrait être utile de votre temps pour utiliser la bibliothèque officielle, pourrait résoudre votre problème. – fire

+0

@fire J'utilisais la librairie officielle auparavant, j'avais toujours le même problème. – roflwaffle

Répondre

0

De toute évidence, le cookie de session ne «colle» pas dans Safari. Comme il est défini par Javascript, vous devrez fouiller dans le débogueur de Safari (quel que soit l'endroit où il se trouve) et voir ce qui se passe. Il se peut qu'un modèle de sécurité n'autorise pas le javascript de tiers à créer des cookies, ou que le navigateur lui-même n'autorise pas les cookies tiers.

+0

Je l'ai joué avec un peu plus et le cookie du côté du site (celui qui se passe avec l'identifiant de la session) semble fonctionner. Je peux voir l'identifiant de session dans le cookie sur la première page de chargement. Sur tout chargement de page après cela, l'identifiant de session est correctement extrait du cookie et envoyé avec un appel AJAX (comme la première fois). Le problème semble être que le domaine "service" crée une autre session pour Safari sur chaque appel AJAX. – roflwaffle

0

recherche session_start() et coller la logique arround cette fonction ...

Questions connexes