Partage de sessions, pixel espion !

Eléphant du PHP | 53 Messages

11 mai 2010, 16:13

Hey !


Encore et toujours avec mes problèmes de sessions :p j'ai pas mal avancé sur le sujet, je pensais même l'avoir résolu mais j'ai eu la jugeote de lancer IE 8 -_- Et naturellement ça ne marche pas.

J'explique la chose:

Je veux partager ma session sur deux domaines (sachant que j'ai un seul dossier qui contient mon code qui contient un contenue différent que j'apel par rapport à là où je me trouve).
Pour faire simple, sur ma page d'accueil je créé deux images " de 1 pixels" qui pointent vers un script. J'envoie en même temps ma session_id() pour permettre le transfert de sessions.

Page d'accueil:
echo '<div style="display:none;">
		<img src="http://site1.com/scripSession.php?session='.session_id().'" />' ;
echo '<img src="http://site2.com/scripSession.php?session='.session_id().'" />' ;</div>' ;
Donc au chargement de ma page d'accueil je lance mes deux scriptent qui vont aller propager ma session aux deux sites.

Au niveau de mon script:
<?php 
	if (isset($_GET['session']))       
	{
		$test = $_GET['session'];
	        session_id($test);   
	        session_start();
	        $ma_session = $_SESSION;
		$_SESSION = $ma_session;
	}
?>
Voilà c'est ausi "simple" que ça ! Et ça marche très bien ! Sous firefox :x Une fois connecté sur le site 1, je change de site et je suis connecté sur le site 2 avec la même session !

Sous IE c'est une autre histoire...

Ma session est bien envoyée par ma page index, mais en revanche ne fonctionne pas. J'ai deux session_id() d'un site à l'autre ...

J'ai essayé en incluant un script javascript pour appelé mon code, avec du CSS et même avec une iframe mais rien ne marche -_-

Le plus étrange:

Je créer mon iframe:
<iframe src="http://site2.com/scripSession.php?session=session_id() >
Je lance le site 1 sous IE (après avoir vidé le cache). Je me connecte, puis je change de site mais rien ne se passe. Je reviens alors sur le site 1 et j'affiche la source:
<iframe src="http://site2.com/scripSession.php?session=a98f1ae9f81sv198g1e9f1q1csde65gz1erf >
Je copie colle l'url et là PAF ça marche ! Je suis connecté sur mon site 2 ! 8-|

DOnc moi sque j'en dis c'est qu'on peu pas passer une session_id sous IE ! Sinon je vois vraiment pas :(

Un peu d'aide serait la bienvenue :priere:

Mammouth du PHP | 661 Messages

11 mai 2010, 23:30

salut :

1. c'est normal qu'il manque un " .. ?
2. t'as testé avec un UrlRewriting ?
 echo '<img src="site/scriptSession/'.session_id().'.png" />' ;
là, quoiqu'il advienne, ils crieront que c'est bien une image !... à la limite autant y retourner via le PHP un readfile(monPng1px.png) ...

@++

Eléphant du PHP | 53 Messages

12 mai 2010, 09:17

Désolé pour la coquille " je l'ai oublié quand je recopiais mon code.

Je comprends pas ton explication avec l'utilisation de l'URLREWRITING. Pourrais tu aller plus loin dans ton explication ? 8-|

Ma solution marche sous firefox, donc pourquoi IE fait des siennes :'(

Merci de ta réponse !

Mammouth du PHP | 661 Messages

12 mai 2010, 13:42

Ma solution marche sous firefox, donc pourquoi IE fait des siennes
par ce que IE se fout de ce que tu lui demande !... si ce n'est pas une URL d'image, il ne l'utilise pas !... :D ... soit-disant pour la sécurité, ou je ne sais quoi !...

donc en plaçant un script .htaccess sur ton serveur en charge de la gestion des session, il transformera

/scriptSession/a98f1ae9f81sv198g1e9f1q1csde65gz1erf.png

en :

/scriptSession.php?session=a98f1ae9f81sv198g1e9f1q1csde65gz1erf

ce qui appellera bien la page demandé, avec les données demandées !...

ensuite, libre à toi de faire les traitement que tu souhaites, et lui retourner une img avec un header( ... png) et une readFile(monPng.png) ... ainsi, ce n'est pas une fausse image !... mais une vraie qui te sert à faire ce que tu demande !!

Eléphant du PHP | 53 Messages

12 mai 2010, 14:02

Pas bête du tout =D>

Je vais tester ça :)

Eléphant du PHP | 53 Messages

12 mai 2010, 15:56

:( ...

Marche pas !
Voilà mon code !
echo '<div style="">
		<img src="http://www.site2.com/imgSession'.session_id().'.jpg" /></div>' ;
Mon scriptDeTest:
<?php 
	if (isset($_GET['session']))       
	{
	    $test = $_GET['session'];
	    session_id($test);   
	    session_start();
	    $ma_session = $_SESSION;
	    $_SESSION = $ma_session;
	}

	header("Content-type: image/jpeg");
	echo file_get_contents('images/pouet.gif');
?>
Et ma réécriture dans mon htaccess:

Code : Tout sélectionner

RewriteRule ^imgSession([0-9a-z]+).jpg$ scripTestSession.php?session=$1 [L]
Voilà, ca marche niquel sous firefox, donc ton idée était bonne, mais arrivé sous IE, ça plante ! Que faire :(

Mammouth du PHP | 661 Messages

12 mai 2010, 18:14

1. donc tu ouvre ton image directement dans le navigateur (copie/colle l'url)
2. si l'image s'affiche bien sous IE ... c'est que tu as un bug dans le potage ^^
3. si l'image ne s'affiche pas, débug pour voir d'où ça viens ...
4. ... je pourrais paraitre pour être lourd .. mais t'as testé avec readfile() ?

@+

ViPHP
AB
ViPHP | 5818 Messages

12 mai 2010, 18:51

Heu... sinon sur le principe, y'a pas danger si on te vole l'identifiant de session ?

Eléphant du PHP | 53 Messages

14 mai 2010, 09:18

Bonjour et désolé du retard !

Donc la démarche:

Je me connecte sur site1. J'affiche la source et je récupère mon image et je la met dans l'url:
http://www.site2.com/imgSessionbb6c7d9b414bbf852a8a10d2613fa673.jpg
Résultat, j'ai bien mon image qui s'affiche ! Et encore plus fort, mon partage de session se fait correctement ! Héhé :)

Cependant, ça ne marche pas initialement dans le sens où il faut que j'insère moi même l'image dans l'url pour que ça marche ! Donc on en reviens au problème de départ ! Il faut le faire manuellement pour que ça marche...

Je vais essayer tout de suite avec readfile et je repost après, mais je ne comprends vraiment pas que ça ne marche pas avec IE8... A oui parce que comble du comble, je crois que ça marche sous IE6 #-o Mais je n'ai essayé qu'avec "Multiple" IE donc je ne sais pas si cela est valable.

Au niveau des dangers pour l'id de session, je ne pense pas qu'il y ai danger.

Eléphant du PHP | 53 Messages

14 mai 2010, 10:32

Je viens d'essayer readfile() et j'arrive pas à l'utiliser...

J'ai conservé mon .htaccess, et j'ai remplacé mon appel de l'image par:
$file = 'http://www.site2.com/imgSession'.session_id().'.jpg';
readfile($file);
Mais j'ai deux jolis warning :(

Code : Tout sélectionner

Warning: readfile() [function.readfile]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/www/site2/pouet.php on line 804500540 Warning: readfile(http://ww.site2.com/imgSessioned12s9rreg9b414bbf852a8a10d2613fa673.jpg) [function.readfile]: failed to open stream: Success in /home/www/site2/pouet.php on line 804500540
:shock:

Mammouth du PHP | 661 Messages

14 mai 2010, 21:40

nan ... en fait, je te parlais de readFile() pour le mettre dans le fichier en charge de gérer les session, histoire qu'il te retourne une VRAI image !...
Cependant, ça ne marche pas initialement dans le sens où il faut que j'insère moi même l'image dans l'url pour que ça marche ! Donc on en reviens au problème de départ ! Il faut le faire manuellement pour que ça marche...
là, je ne pige pas ... qu'est ce que tu dois faire manuellement ?

Petit nouveau ! | 1 Messages

02 mars 2020, 17:48

Bonjour de la 2020
J'ai donné le même problème qu'un auteur mais je ne peux pas trouver la solution et le seul site avec un peu de discussion est le vôtre. Que dois-je faire pour afficher mon image ?
Je pense que vous devriez examiner ce billet de blog pour obtenir des informations supplémentaires sur la manière de conserver votre téléphone en état de marche à tout moment. Cela pourrait vous permettre de sauvegarder certaines de vos précieuses données

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

02 mars 2020, 19:58

Bonjour de la 2020
J'ai donné le même problème qu'un auteur mais je ne peux pas trouver la solution et le seul site avec un peu de discussion est le vôtre. Que dois-je faire pour afficher mon image ?
Bonjour Lisa47,

Merci d'ouvrir un nouveau sujet en posant clairement ta question, le problème que tu rencontres, ce que tu as essayé et ce qui ne marche pas.
En indiquant les messages d'erreur rencontrés et les extraits de code PHP que tu as essayés et qui ne fonctionnent pas comme prévu.

En effet, il n'est pas pratique de relancer un sujet 10 ans plus tard, surtout que le comportement des navigateurs web a bien évolué depuis, notamment en ce qui concerne la protection de la vie privée et la gestion des cookies.
Quand tout le reste a échoué, lisez le mode d'emploi...