|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : mai 2005 Messages : 25 ![]() |
Bonjour,
je cherche à pouvoir me logger à mon site via une requête POST en PHP, et pouvoir ensuite parcourir les pages en continuant à être loggé. Le problème qui se pose, c'est que j'arrive à m'identifier, mais je ne le reste pas. Dès la redirection (Header()) effectuée, mon identification de session est perdue. Existe-t-il un moyen de rester "loggé" ? Merci ! |
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() |
En gêrant la lecture/écriture du cookie de session dans l'entête HTTP ?
__________________
|
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : mai 2005 Messages : 25 ![]() |
Concrètement ça peut se faire comment ?
|
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() |
"Etre loggé", comme tu dis, c'est posséder un cookie sur ta machine que le serveur t'a envoyé lorsque tu t'es connecté. Ensuite, à chaque appel de page, ton navigateur renvoie ce cookie au serveur. Ce dernier lit ce cookie et vérifie qu'il le connaisse bien, et récupère les informations de session correspondantes. Si il considere ton cookie comme valide, il te considere comme connecté et donc te renvoie une page en conséquence. Sinon, il ne te considère pas comme connecté, même si tu as entré tes identifiants la fois d'avant.
Pour récuperer ce cookie, il faut lire le header correspondant au cookie dans la page reçue lorsque tu te connectes. Je suppose que tu utilises fsockopen, puisque tu parles de socket ?
__________________
|
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : mai 2005 Messages : 25 ![]() |
Oui tout à fait j'utilise fsockopen().
Je capte comment envoyer le cookie, même si je sais pas concrètement comment ça se passe niveau syntaxe. Par contre, pour récupérer la session, je ne sais pas comment faire. La page login renvoie directement à une autre, celle qui vérifie le login doit sans doute créer le cookie. Comment faire pour l'intercepter ? |
|
|
00
|
|
|
#6 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Ce n'est pas vous (le client) qui gérez ou avez accès à la session. Tout ce que vous devez faire c'est (re)transmettre l'identifiant de session que le serveur vous a attribué. Par contre, ce dernier point varie, car pour un serveur PHP, il existe deux méthodes de transmission de l'identifiant (le serveur pouvant proposer les deux pour des raisons de portabilité) : le cookie (recommandée) ou la réécriture des liens internes (use_trans_sid) - le serveur réécrit les liens pour y inclure l'identifiant en paramètre GET et les formulaires pour y ajouter en champ caché l'identifiant (ceci étant configurable).
Toutes les informations liées aux cookies figurant, peu importe le sens (de la part du serveur il s'agit de l'entête Set-Cookie et du client quand vous les renvoyez : Cookie - faire une recherche pour plus de précisions) parmi les entêtes. Et la fonction pour lire les entêtes : stream_get_meta_data ? |
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : mai 2005 Messages : 25 ![]() |
Le problème, c'est que dans mon cas, la page qui créé le cookie, redirige vers une autre, et je ne sais pas comment intercepter cette page.
Car du au session_start(), la nouvelle page qui va s'afficher, créera une nouvelle variable de session. |
|
|
00
|
|
|
#8 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Si redirection il y a, vous devriez trouver un entête Location (ne pas tenir compte de la casse) parmi le (sous-)tableau renvoyé par la fonction stream_get_meta_data à la clé wrapper_data.
Mais c'est tout le problème de l'utilisation de fonctions bas niveau (type socket) : c'est à vous que revient la gestion des redirections. PS : par redirection j'entends celle qui sont effectuées côté serveur (HTTP). |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com