2010-07-17 4 views
1

J'ai essayé d'ajouter un forum à mon site Web Codeigniter. Tout s'est bien passé, sauf pour une petite partie: je voudrais que je me connecte depuis le site principal pour le reporter sur le forum. Puisque le forum n'est pas capable de fonctionner dans Codeigniter, j'ai créé un sous-domaine pour lancer le forum. Cela signifie que le site principal et le forum ne partagent pas de cookies. Le forum est alimenté par Phorum, donc il y a un crochet que je peux utiliser pour me connecter si j'ai le user_id de mon utilisateur. En d'autres termes, mon problème se résume essentiellement à pouvoir exécuter une fonction sur un domaine pouvant obtenir la variable user_id stockée dans la session d'un autre domaine.Comment accéder à la variable de session codeigniter depuis un site externe

Voici les choses que je l'ai essayé:

  1. Mise en place d'un contrôleur CodeIgniter qui utilise CI-> session de faire écho à la user_id. Ensuite, dans le forum, j'ai utilisé CURL pour aller chercher la sortie du contrôleur codeigniter. Cela ne semble pas fonctionner parce que CURL ne porte pas de cookies ou de sessions ou quelque chose, de sorte que codeigniter ne peut pas accéder à sa session lorsqu'il est appelé par CURL.

  2. Même chose mais avec file_get_contents. File_get_contents est désactivé sur mon serveur.

Je suis à court d'idées. Est-ce que quelqu'un sait une fonction que je pourrais écrire qui me ferait une session de CI stockée user_id d'un domaine différent?

+0

Copie possible de [accéder à des valeurs de session de codeigniteur à partir de fichiers externes] (http://stackoverflow.com/questions/7926455/access-codeigniter-session-values-from-external-files) –

Répondre

0

Voici deux choses que vous pouvez essayer:

1) l'hôte du forum dans un sous-répertoire de votre projet CodeIgniter. Ainsi, vos deux sites Web auront l'URL http://mysite.com/ et http://mysite.com/forum. Maintenant qu'ils partagent le même domaine, vous pouvez accéder à la session.

2) Dans la page de connexion de votre forum, affichez le message "Connexion automatique". Sur cette même page, ajoutez un iframe dans le html avec le src = "http://mysite.com/autologin/tokenid", mais cachez-le avec css. La page autologin aura des informations de session CI, que vous pouvez mettre temporairement à la disposition du monde via un tokenid difficile à deviner et en renvoyant $ _SESSION ['user_id']. N'oubliez pas d'expirer cette page lorsque vous en avez fini avec elle. Ensuite, actualisez la page de connexion du forum et utilisez CURL pour récupérer les informations de session publiées au http://mysite.com/autologin/tokenid. C'est plein de failles de sécurité, alors faites-le seulement en dernier recours.

+0

Eh bien, les failles de sécurité sont un non -non. Normalement, monsite.com/forum pointe vers le contrôleur de forum. J'ai besoin de mysite.com/forum pour aller sur ce forum sans vraiment utiliser de codeigniter (ou être capable d'utiliser les fonctions de codeigniter sans utiliser de contrôleurs). Savez-vous comment faire cela? – Ethan

+0

Si vous faites l'option 1, mysite.com/forum sera son propre sous-répertoire indépendant du framework CI. Cela signifie que vous pouvez utiliser les fonctions habituelles de php dans mysite.com/forum pour inspecter la variable $ _SESSION, qui contiendra les informations CI que vous recherchez. – John

Questions connexes