loudo Posté 9 Mars 2006 Posté 9 Mars 2006 Bonjour, Je me pose des questions car je réfléchis pour proposer tout ou partie de mon site en marque blanche. Ma question est la suivante, je vais essayer d'être clair. J'ai un serveur SA qui correspond à mon site et un serveur SB qui correspond à un site qui utiliserai le service en marque blanche. Si dans une page php du serveur SB j'utilise la fonction fopen pour ouvrir une page php du serveur SA comment réagit la variable $_SESSION ? Est ce que l'exemple ci-dessous fonctionne et affiche "test" ? je crois que non mais je voudrai être sur. Page sur le serveur SB: $_SESSION["toto"] = "test";fopen("serveura/pagea.php");fread....... Page sur le serveur SA: pagea.php echo $_SESSION["toto"]; // test ou rien ? Merci d'avance et j'espère que j'ai été clair.
Portekoi Posté 9 Mars 2006 Posté 9 Mars 2006 Bonjour, La session est propre au serveur qui appelle la page. Pour toi, c'est transparent et le script devrait t'afficher 'test'. A tester tout de même Portekoi
loudo Posté 9 Mars 2006 Auteur Posté 9 Mars 2006 Par contre j'ai peur qu'il y ai un problème vu que la page sur le serveur SA va être appelée par le serveur SB et non un client Web. Il risque pas d'y avoir un mélange des sessions ?
Portekoi Posté 9 Mars 2006 Posté 9 Mars 2006 Qu'appelles tu "client web"? Si c'est le navigateur, ce n'est pas lui qui stocke les sessions
loudo Posté 9 Mars 2006 Auteur Posté 9 Mars 2006 Le client Web c'est le navigateur. Comment ça se passe alors quand j'ai deux navigateur qui appellent la page sur le serveur B. Le serveur va lui même ouvrir la page sur le serveur A. Il y aura bien deux sessions différentes ?
Portekoi Posté 9 Mars 2006 Posté 9 Mars 2006 Et bien dans ton code php, include en local serait : <? include("monfichier.php") ?> Hors pour ce que tu veux faire, il va falloir utilisateur un include distant donc : <? include("http://ww.serveura.com/monfichier.php") ?> Si les paramètres le permettent biensûr Un peu de lecture : http://fr.php.net/include/ Portekoi
loudo Posté 9 Mars 2006 Auteur Posté 9 Mars 2006 Je connais ça mais j'aurai toujours le même problème avec les sessions donc ça peut pas fonctionner.
loudo Posté 9 Mars 2006 Auteur Posté 9 Mars 2006 En faisant ça j'aurai le même problème. Les sessions vont se mélanger si j'utilise lavariable $_SESSION dans monfichier.php. <?include("http://ww.serveura.com/monfichier.php")?>
Portekoi Posté 9 Mars 2006 Posté 9 Mars 2006 Sauf si elles portent le même nom sur les deux serveurs différents, je ne pense pas
loudo Posté 9 Mars 2006 Auteur Posté 9 Mars 2006 http://ww.serveura.com/monfichier.php <?$_SESSION["toto"] = "valeurb";?> <?$_SESSION["toto"] = "valeura";include("http://ww.serveura.com/monfichier.php")echo $_SESSION["toto"];?> Il va afficher "valeura" ou "valeurb" ?
TheRec Posté 9 Mars 2006 Posté 9 Mars 2006 (modifié) L'include du fichier distant "http://ww.serveura.com/monfichier.php" se fait sur ce que ce fichier génère lors de la requête HTTP (tu y accès avec HTTP) ... et non sur le code PHP ... Tu ne peux pas faire d'include du code PHP distant à moins qu'il soit affiché en texte par exemple (ça devrai te paraître logique, sinon il y aurait quelques problèmes de sécurité). Ce n'est meme pas une question de domaine... simplement du fait qu'un include vers un chemin relatif ou absolu n'utilise pas le protocole HTTP. Tu ne pourras pas passer non plus par un cookie si les domaines sont différents (les navigateur ne reprennent pas les cookies d'autres domaines pour une requête sur un domaine... pour des raisons de sécurité). Modifié 9 Mars 2006 par TheRec
loudo Posté 9 Mars 2006 Auteur Posté 9 Mars 2006 Ok c'est bien ce que je pensais alors. Et le problème est le même avec fopen c'est bien ça ? j'ai bien compris ?
Portekoi Posté 9 Mars 2006 Posté 9 Mars 2006 Ok, j'ai rien dis Il me semblait avoir fais un script php permettant un include distant.... Je vais regarder ca....
TheRec Posté 9 Mars 2006 Posté 9 Mars 2006 (modifié) Non je ne dis pas que l'include distant est impossible, il suffit d'activer les Gestionnaires d'URL de PHP (qui ne le sont pas par défaut normalment) et ensuite il est possible d'include en utilisant une URL pointant vers le fichier désiré. include("http://www.serveura.com/monfichier.php") on peu même imaginer lui passer des paramètres GET include("http://www.serveura.com/monfichier.php?var1=valeur1") Mais si le serveur distant peut interpréter le fichier (PHP), il le fera (c'est le serveur distant que l'interprète !) et retournera ce que le script retourne en temps normal (exécution locale). Si en revanche le code PHP n'est pas interprété, il sera retourné comme du texte brûte et dans ce cas le code sera interprété par le serveur "local"... (sans même faire appel à la fonction eval). Mais bon ce dernier cas n'est pas souhaitable d'un point de vue sécurité... car si quelqu'un essaie d'accéder au fichier directement en entrant l'URL dans son navigateur il vera le code s'afficher, en tout logique ! Modifié 9 Mars 2006 par TheRec
loudo Posté 9 Mars 2006 Auteur Posté 9 Mars 2006 Ok mais c'est le même problème les sessions sont propres à chaque serveur.
bozoleclown Posté 9 Mars 2006 Posté 9 Mars 2006 (modifié) http://ww.serveura.com/monfichier.php <?$_SESSION["toto"] = "valeurb";?> <?$_SESSION["toto"] = "valeura";include("http://ww.serveura.com/monfichier.php")echo $_SESSION["toto"];?> Il va afficher "valeura" ou "valeurb" ? <{POST_SNAPBACK}> valeura apres tu pourrais envoyer en paramètre de ton code includé ou fopené un identifiant de session et donc en bidouillant bien ca doit etre possible Modifié 9 Mars 2006 par bozoleclown
loudo Posté 9 Mars 2006 Auteur Posté 9 Mars 2006 On vient de me dire l'inverse au dessus !!! je comprends plus rien.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant