yaK2manD Posté 23 Juin 2012 Posté 23 Juin 2012 Bonjour, J'ai un petit soucis. J'ai un serveur chez ovh avec la base de données (serveur A) et un autre serveur sans base de données (serveur . Ce que je souhaiterais faire, c'est une identification sur le serveur B. C'est-à-dire que lorsque l'utilisateur arrive sur B, il remplit ses identifiants banalement et ensuite le script envoie les identifiants au A (sans que l'utilisateur ne le remarque évidemment) qui check dans la base de données et ce dernier renvoie les informations de l'utilisateur au B. Je vous ai fais un petit dessin J'ai fais pas mal de recherche sur le système de SSO car je me disais que c'était à peu près le comportement mais en fait non. J'ai également regardé du côté de cURL ... Avez-vous une idée svp. Merci
Message populaire. Aenoa Posté 23 Juin 2012 Message populaire. Posté 23 Juin 2012 j'ai eu une image en tête en te lisant, mais ça sera extrêmement barbare ! effectuer depuis B un files_get_content d'une page de A, qui fais une verif en bdd et print ensuite sur la page les infos, séparés par un caractère quelconque (::: par exemple) pour en faire un array sur b via un explode(). c'est loin d'être optimisé et recommandé, mais ça fonctionne (attention, codé en ultra vitesse, ne pas copier coller ou autre, fonctions peut être mal écrites, c'est juste pour l'exemple.) A: <?php// données recues: $_POST[A] et $_POST[B]$retour = files_get_content("http://mon_serveur_B:UN_PORT/getinfo.php?user=$_POST[A]&pass=$_POST[B]");if($retour != "erreur") // voir B{$retour_array = explode(":::", $retour);$mail = $retour_array[1];$adresse = $retour_array[2];// etc}?> B <?phpif(!empty($_GET[user]) && !empty($_GET[pass])){// verif de la correspondance user / pass, on va appeller la verif "Z"if(Z){// on recupère les données avec un fetch et tout, on en fais un seul string sous forme aaa:::bbb:::ccc:::mail:::ip:::etc... qu'on stock dans $y et on l'imprimeecho $y;}else{echo "erreur"; // mdp différent de celui du compte}}else{echo "erreur"; // incomplet, on refuse}?> ou au pire, sur A, tu autorise un utilisateur en % histoire qu'il sache se connecter via le script php vers ton serveur B. 1
yaK2manD Posté 23 Juin 2012 Auteur Posté 23 Juin 2012 (modifié) Oj, je comprends le principe. La fonction files_get_content execute en un premier temps cette page sur le serveur distant et reprend tout ce qui s'affiche ? Par contre, la dernière phrase, je n'ai rien compris, mais alors pas du tout sur A, tu autorise un utilisateur en % histoire qu'il sache se connecter via le script php vers ton serveur B Merci Modifié 23 Juin 2012 par yaK2manD
Aenoa Posté 23 Juin 2012 Posté 23 Juin 2012 Oj, je comprends le principe. La fonction files_get_content execute en un premier temps cette page sur le serveur distant et reprend tout ce qui s'affiche ? Exact. Si l'on précise une page internet, il va récupérer le code source de la page. Donc évidement, il ne faut mettre que du php, aucun <html> etc. Par contre, la dernière phrase, je n'ai pas compris, mais alors pas du tout Si votre base de donnée est en MySQL (je n'ai pas testé les autres), vous avez la possibilité de créer des utilisateurs. Ces utilisateurs ont une limite définissant de quel endroit ils peuvent se connecter. Par défaut, l'on met tout le temps "localhost". Mais, en mettant "%" signifiant "tout serveur", tu pourra te connecter de n'importe où; y compris d'un serveur distant. Donc, sur B, quand tu te connecte à mysql, suffit de marquer (exemple en mysql_*) : "mysql_connect("ton_ip_serveur_a", $user, $pass)".
yaK2manD Posté 23 Juin 2012 Auteur Posté 23 Juin 2012 Okay !!! Je comprends. Cette méthode aurait été pas mal du tout mais OVH ne le permet pas sur des mutualisés. Je vais donc utiliser la première. Restreindre l'execution du script sur le serveur A par un htaccess, crypter toutes les données avec un algo perso. Ca éviterait partiellement de pouvoir pomper toutes les données. Merci +1 !
JoP Posté 15 Juillet 2012 Posté 15 Juillet 2012 (modifié) Bonjour, Si ton serveur A a l'extension PHP cURL, je te conseille fortement de l'utiliser. L'utilisation de files_get_content entre serveur peut laisser place à des failles de sécurité. De plus, tu peux passer plusieurs paramètres à cURL. Pour ton exemple: $url = 'http://mon_serveur_B:UN_PORT/getinfo.php?user=$_POST[A]&pass=$_POST[B]';// Ouvre cURL$ch = curl_init();curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // par défaut, cURL affiche le résultat directement, mais on veut recevoir les données dans une variable à la place//exécute la requête$result = curl_exec($ch);//ferme cURL il est très important de ne jamais oublier cette ligne car cURL est une extension de PHP et non une fonction de base, il est donc important de le fermer pour ne pas altérer les performances de ton scriptcurl_close($ch); JoP Modifié 15 Juillet 2012 par JoP
Portekoi Posté 16 Juillet 2012 Posté 16 Juillet 2012 Re, cURL est la solution qu'il te faut. C'est très simple à mettre en oeuvre et cela fonctionne parfaitement avec le système que tu veux mettre en place. Portekoi
yaK2manD Posté 26 Juillet 2012 Auteur Posté 26 Juillet 2012 Merci beaucoup. Il est donc préferable d'utiliser curl plutot que file_get_contents lorsqu'on souhaite récupérer des informations d'une autre pas ?
Portekoi Posté 26 Juillet 2012 Posté 26 Juillet 2012 Oui, tout à fait. curl est très bien pour se que tu veux faire. Regarde sur Google, tu as pleins de tutos.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant