IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Cookies] Conserver les $_SESSION avec une redirection via un socket


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 6
    Par défaut [Cookies] Conserver les $_SESSION avec une redirection via un socket
    Bonjour,
    J'ai un pb php qui me semble bien insoluble.
    J'essaye de me connecter à une page en envoyant un login et un pass avec un fsockopen. Cette page m'authentifie puis creer une variable de session, et me redirige.
    Lorsque je lance la connexion qui suit vers la page redirigée (tjrs avec fsockopen), la var de session a disparu.

    J'ai essayé plusieurs methodes:
    Ajouter dans le Header un set-cookie avec le PHPSESSID,
    Ajouter le cookie avec le PHPSESSID,
    Placer un session_start un peu partout,
    J'ai modifié la connexion pour conserver Keep-Alive dans le header.

    J'ai essayé également avec PEAR et mon http_request à cause de la redirection perd aussi ses $_session .

    Une idée ?

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    L'identifiant apparaît-il côté client à un moment ou à un autre ? Sous quelle forme ?

    Car côté serveur, pour un script PHP, le nom de la session par défaut est bel et bien PHPSESSID et l'identifiant peut être transmis de deux manières (éventuellement complémentaires) suivant la configuration de PHP : soit par réécriture des liens internes (l'identifiant est transmis par l'ajout d'un champ caché dans les formulaires ou encore les URL - méthode GET - se voient ajouter un paramètre) soit par cookie (la "norme", configuration recommandée). Il convient donc de récupérer cet identifiant pour le fournir à nouveau, et sous la même forme, lors de ses prochaines requêtes.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 6
    Par défaut
    Oui, j'ai essayé de rajouter le cookie avec la requete, mais ca ne marche pas mieux. Il n'y a pas de champ caché ni de parametre en get dans ce formulaire.

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Il faudrait vous montrer plus précis si vous souhaitez de l'aide (code, résultats obtenus, ...)

    Avez-vous essayé, à tout hasard, cURL, qui est capable de gérer de lui-même un certain nombre de choses, dont les cookies ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 6
    Par défaut
    Oui, je l'ai testé aussi, mais marche pas mieux. En fait, mon objectif est de m'authentifier sur des sites (digg like), et de soumettre en automatique des formulaires. Dans l'exemple ci-dessous, je ne comprends pas pourquoi avec ce code et le paquet PEAR+Http_Request, je n'arrive pas à passer l'authentification.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    include_once("pear.php");
    require_once "HTTP/Request.php";
    require_once "HTTP/session.php";
     
    $req =& new HTTP_Request("http://www.scoopeo.com/user/login");
    $req->setMethod(HTTP_REQUEST_METHOD_POST);
    $req->addPostData("user[login]", "MON_LOGIN");
    $req->addPostData("user[password]", "MON_PASS");
    if (!PEAR::isError($req->sendRequest())) {
         $response1 = $req->getResponseHeader();
    } else {
         $response1 = "";
    }
    echo $req->getResponseBody();
    après, je me suis dit qu'il fallait faire plusieurs requêtes successives pour garder le PHPSESSID. J'ai donc ajouté à la fin de ma 1ère requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $cookie=$req->getResponseCookies();
    et dans ma 2e, j'ai ajouté ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req2->addCookie($cookie[0]['name'], $cookie[0]['value']);
    Ensuite, j'ai testé sur ma machine, d'afficher les var de session, et c'est ca qui a mon avis pose probleme. Voila le code pour tester:
    Ex:
    test.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <?php
     
    include_once("pear.php");
    require_once "HTTP/Request.php";
    require_once "HTTP/session.php";
     
     
    $req =& new HTTP_Request("http://localhost/aaaa/authentification.php");
    	$req->setMethod(HTTP_REQUEST_METHOD_POST);
    	$req->addPostData("type", "login");
     
    	if (!PEAR::isError($req->sendRequest())) {
    	     $response1 = $req->getResponseHeader();
    	} else {
    	     $response1 = "";
    	}
     
     
    	$cookie=$req->getResponseCookies();
    	print_r ($req->getResponseHeader());
    	echo $req->getResponseBody();
    echo "<hr/>";
     
    $req =& new HTTP_Request("http://localhost/aaaa/final.php");
    	$req->setMethod(HTTP_REQUEST_METHOD_POST);
    	$req->addPostData("type", "login");
     
    	if (!PEAR::isError($req->sendRequest())) {
    	     $response1 = $req->getResponseHeader();
    	} else {
    	     $response1 = "";
    	}
     
     
    	$cookie=$req->getResponseCookies();
    	print_r ($req->getResponseHeader());
    	echo $req->getResponseBody();
     
     
    ?>
    authentification.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    session_start();
    $_SESSION["type"]="cocoxxxxnut";
    header("location :final.php");
    ?>
    final.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
     
    session_start();
    echo "xx".$_SESSION["type"]."xx";
     
    ?>

Discussions similaires

  1. Problème avec une redirection
    Par Oli_Ifre dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 16/04/2007, 11h39
  2. Recuperer les données d'une base via JDBC
    Par gloglo dans le forum JDBC
    Réponses: 2
    Dernier message: 02/10/2006, 11h43
  3. Conserver les éléments d'une JTable
    Par toto10 dans le forum Composants
    Réponses: 10
    Dernier message: 11/05/2006, 17h13
  4. [PHPMailer] Les mails avec une adresse extérieure ne partent pas
    Par captaindidi dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 06/01/2006, 19h11
  5. Réponses: 19
    Dernier message: 03/08/2004, 10h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo