Conserver sa session_id() d'un site à un autre !

Eléphant du PHP | 53 Messages

29 mars 2010, 15:06

Site A:

sessionTest.php:
<?php 
	session_start();
	 echo $serializeId = serialize($_SESSION);
?>
Résultat:
a:2:{s:7:"SESSION";a:2:{s:6:"connect";O:6:"connection":2:{s:8:"panier";a:0:{}s:5:"total";i:0;}s:11:"preferences";a:0:{}}s:7:"rupture";i:1;}


Site B:
<?php
$session  = file_get_contents('http://www.siteB.com/sessionTest.php');
$data     = unserialize($session);
$_SESSION = $data;
var_dump($data);
?>
Résultat:
array(0) { }

ViPHP
ViPHP | 5462 Messages

29 mars 2010, 15:09

pareil je me retrouve avec une erreur :
Error at offset 35 of 139 bytes

Eléphant du PHP | 53 Messages

29 mars 2010, 15:12

Arf :(

ViPHP
ViPHP | 5462 Messages

29 mars 2010, 15:13

on va tester autrement (peu être plus propre même du coup)

site A :
session_start();
echo session_encode();
site B
session_start();
$session  = file_get_contents('http://127.0.0.1/test/test.php');
session_decode($session);
	
var_dump($_SESSION);

Eléphant du PHP | 53 Messages

29 mars 2010, 15:20

Bon c'est déjà mieux :) Maintenant ça marche du site A vers le site A !



Mais ça ne marche toujours pas du site A vers le site B ! :(


Site A:
session_start();
echo session_encode();

Résultat !
SESSION|a:2:{s:7:"connect";O:6:"connection":2:{s:8:"panier";a:0:{}s:5:"total";i:0;}s:11:"preferences";a:0:{}}s:7:"rupture";i:1;}

Site B:
session_start();
$session  = file_get_contents('http://www.siteB.com/sessionTest.php');
session_decode($session);
       
var_dump($_SESSION);
Résultat :

array(0) { }

ViPHP
ViPHP | 5462 Messages

29 mars 2010, 15:29

spé qu'il arrive a a la serialisé, fait un print_r($_SESSION) sur le site A, je vais essayer de recopier le truc

Eléphant du PHP | 53 Messages

29 mars 2010, 15:34

Ok j'ai donc fais un print_r de la session sur le site A (index.php)

Résultat:
Array ( [SESSION] => Array ( [connect] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => Connect[pannier] => Array ( ) [total] => 0 ) [preferences] => Array ( ) ) [rupture] => 1 )

ViPHP
ViPHP | 5462 Messages

29 mars 2010, 15:36

ah deja ca c'est pas bon le coup du
__PHP_Incomplete_Class Object

Eléphant du PHP | 53 Messages

29 mars 2010, 15:38

Arf ! Qu'entend tu pars ça :/

ViPHP
ViPHP | 5462 Messages

29 mars 2010, 15:41

problème au niveau de ta session, regarde si y'en a pas un en trop qui traine, ou alors ta pas mis le session_start au bon endroit, ou alors tu fais un appelle de class pas déclarer,
a tu bien mis dans ton php.ini le

Code : Tout sélectionner

display_error = On; error_reporting = E_ALL | E_STRICT;

Mammouth du PHP | 672 Messages

29 mars 2010, 15:44

Je vais peut-être dire une connerie, mais ce ne serait pas :
Quand l'utilisateur toto se connecte sur le site A, PHP lui ouvre une session et lui affecte un ID.
Quand l'utilisateur toto se connecte sur le site B, PHP va se connecter sur le site A. Et comme PHP n'est pas connecté sur ce site, PHP lui ouvre une nouvelle session.

Il faudrait peut-être voir (suivant les cas d'utilisation) :
- Les cookies. Il me semble qu'il y a moyen d'utiliser session_set_cookie_params pour créer un cookie pour le siteB quand on est sur le siteA
- Stocker le tableau $_SESSION de A dans un fichier $id.txt sur le site A. On récupère ce fichier quand on est dans B - soit en récupérant l'ID via l'URL, soit en forçant l'ID (suivant l'utilisateur).
- Utiliser un système d'Authentification unique

ViPHP
ViPHP | 4039 Messages

29 mars 2010, 15:46

Juste pour savoir, mais comment les sites A et B tombent d'accord sur l'identité de l'utilisateur à transférer ?

Parce que si le site B fait une requête au site A de la façon dont vous le faites, ce dernier lui répond comme s'il s'agissait d'un nouvel utilisateur (puisque c'est le serveur qui fait la requête, et non l'utilisateur. Et donc aucune donnée de session n'est transférée, et donc A crée une nouvelle session).


Edit: hop, macgawel a tout à fait raison.

Et les cookies ce sera dur aussi, puisqu'un site ne peut lire les cookies que de son propre domaine ! (les cookies utilisés par hotmail.com ne sont accessibles qu'a partir du domaine hotmail.com)
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 53 Messages

29 mars 2010, 15:51

En effet c'est vrai que il est impossible pour le site B de connaitre quel est l'utilisateur du site A ...


J'aimerais que la connexion puisse se faire dans les deux sens ! Si un utilisateur arrive sur le site B, il peut tout aussi bien se connecter dessus et rester connecter sur le site A ! Je vais regarder session_set_cookie_params mais je pense qu'il faudra que je fasse cela dans les deux sens ! Je regarde ça ! Merci pour vos réponses :wink:

ViPHP
ViPHP | 5462 Messages

29 mars 2010, 15:52

non y'a pas de soucis, la session se fais par rapport au cookie du navigateur, par contre si on ouvre le site A sur firefox, et le site B sous safari, la ca marchera pas

ViPHP
ViPHP | 4039 Messages

29 mars 2010, 16:12

non y'a pas de soucis, la session se fais par rapport au cookie du navigateur, par contre si on ouvre le site A sur firefox, et le site B sous safari, la ca marchera pas
:?

Et comment le cookie du navigateur de l'utilisateur se retrouverait dans la requête du site B au site A, et donc en dehors de tout navigateur (a moins de l'insérer dans les entêtes, ce qui constituerait une piste) ?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.