2009-02-23 9 views
0

J'utilise la classe httprequest dans l'une de mes applications pour demander une page inter-domaine. Fondamentalement, j'avais besoin d'inclure deux pages basées sur l'état connecté de l'utilisateur, via une requête ajax interdomaine. En raison de problèmes de sécurité, ceci n'est pas autorisé.php httprequest class et session

Donc ce que j'ai fait, c'est que j'ai créé une page proxy qui utilise la classe httprequest pour demander le fichier distant qui inclut les deux apges en fonction de l'état de connexion de l'utilisateur. Maintenant, le problème est que chaque fois que la classe httprequest fait une nouvelle requête, la session est détruite, donc une fois que je suis connecté et que j'actualise la page la prochaine fois que la classe envoie une nouvelle requête et crée ainsi une nouvelle session, de sorte que l'utilisateur connecté soit déconnecté. Ce que je dois faire est de maintenir la même session sur plusieurs requêtes http, jusqu'à ce que l'utilisateur choisisse de se déconnecter.

J'ai observé dans firebug que la requête http envoie le cookie PHPSESSID, mais rien n'est envoyé du serveur en réponse. Celà a-t-il un sens? Comment puis-je faire cela en utilisant des cookies php? Aide aimablement.

+2

Cela devrait être sur http://thedailywtf.com/ –

+0

Quelle classe HTTPRequest sont vous utilisez? –

Répondre

1

Vous devez transmettre les cookies entre le navigateur et ce serveur distant. Je travaille sur something similar en ce moment, mais je vais vous donner un exemple plus simple:

proxy.php

<?php 

session_start(); 

if (! isset($_SESSION['remote_session_id'])) { 

    $response = make_initial_request(); 

    /* 
    * This means to read the Set-Cookie header and store it in your own session 
    */ 
    $_SESSION['remote_session_id'] = $remote_session_id = get_remote_session_id($response); 

} else { 
    /* 
    * Inside this function you must send a Cookie header populated with the value 
    * of $remote_session_id. Its name is dependent on the remote server. 
    */ 
    $response = make_remote_request($_SESSION['remote_session_id']); 
} 
+0

@Stan Merci beaucoup pour votre aide. J'ai résolu la question en utilisant un iframe. Cela fonctionne plutôt bien. – Kunal