Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2008, 17h03   #1
Invité de passage
 
Inscription : avril 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 6
Points : 2
Points : 2
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 ?
ynizon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2008, 18h52   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2008, 11h52   #3
Invité de passage
 
Inscription : avril 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 6
Points : 2
Points : 2
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.
ynizon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2008, 12h15   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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 ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2008, 14h26   #5
Invité de passage
 
Inscription : avril 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 6
Points : 2
Points : 2
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 :
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 :
$cookie=$req->getResponseCookies();
et dans ma 2e, j'ai ajouté ça
Code :
$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 :
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 :
1
2
3
4
5
<?php
session_start();
$_SESSION["type"]="cocoxxxxnut";
header("location :final.php");
?>
final.php
Code :
1
2
3
4
5
6
<?php
 
session_start();
echo "xx".$_SESSION["type"]."xx";
 
?>
ynizon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h39.


 
 
 
 
Partenaires

Hébergement Web