Salutation à tous

Voici mon soucis.

J'ai un serveur Minecraft, sur le quel j'aimerais incorporé une boutique en ligne depuis mon site web.

J'ai trouvé un pluggin Minecraft qui permet de mettre l’inventaire des joueurs en base de donnée, mais voila...

Je dois me connecté à ma base de donnée Minecraft depuis mon site web, qui lui à une base différente.

J'aurais aimer savoir comment créer une connexion secondaire, ou y a t'il moyen à travers une iframe d'avoir un page connecté à une autre base de donnée que celle du site?

Je précise que la base de donnée du site n'est pas sur le même serveur que celle de Minecraft, et que sur le site j'utilise PDO.

Voila, j’espère que ma question est assez explicite.

Merci de votre aide

Cordialement

14 réponses


Fre3z69
Auteur
Réponse acceptée

J'ai réussi grâce à Curl, et la fonction http_build_query() pour passer les infos au site distant.

tout fonctionne, merci pour l'aide

Cordialement

Salut Fre3z69,

Je sais pas si c'est se que tu cherche vraiment mais je pense que sa peut aidé j'ai trouver sa :

www.developpez.net
www.developpez.net

J'ai déjà réalisé deux connexions sur deux serveur différents mais j'avais deux fichier de connexion inclue dans une page php différente car j'utilisai l'ajax.

Mais je pense que largement faisable.

J'espère t'avoir aidé le plus possible :)

WebMaster Junior chez 123plantes

Fre3z69
Auteur

Bin si, mais ça n'utilise pas PDO, et j'ai besoin de PDO, tout mon site fonctionne avec.

Dans le principe c'est simple, mais comment je met 'true' en PDO??

Merci en tout cas

Je ne sais pas comment on peut mettre true mais j'ai trouver sa :
SDZ

Je suis pas expert mais c'est vrai que ta question m’intéresse également donc si je trouve quelque chose et je peut aidé je t'en informerai :)

WebMaster Junior chez 123plantes

Fre3z69
Auteur

Je pense que , après avoir fait un test, je ne peux pas me connecter à distance à ma base de donnée.

En tout cas je vois pas comment faire, et je ne serais, avec mon niveau en php actuel, créer d'API.

En tout cas je continu de chercher, merci pour ton aide

Cordialement

Sinon se que tu peut faire c'est de crée un fichier connexion2.php tu met à l'intérieur ta connexion a la base de donnée deux.

Dans un second temps tu crée un fichier recupe_connexion2.php ou tu insère ta connexion2.php avec un require puis tu faite ta ou tes requêtes sur la base de donnée.
Et pour finir lors du chargement de ton site, tu récupère a l'aide de l'ajax avec $.get de jQuery.

exemple :

fichier connexion1.php :

<?php  
  try{
    $db1 = new PDO($dns,$utilisateur,$motdepasse,array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'));
    $db1->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  }catch(PDOException $e){
    echo 'Probleme de base de données';
    exit();
  }
?>

fichier recup_connexion1.php :

require_once('connexion1.php');
    $recordset = $db1->query("SELECT champs à récupérés....
                                FROM tables....
                                  WHERE conditions....
    $data = $recordset->fetchAll(PDO::FETCH_ASSOC);
    if(count($data) == 0){
      header($_SERVER'SERVER_PROTOCOL']." 400 Bad Request"); 
    }
    else{
        /* Traitement des données récupérées */
     foreach ($data as $key => $valeur) {
           codes.....
      } 
         header("Content-Type: application/json; charset=utf-8");
         echo json_encode($data);
    } 
?>

fichier connexion2.php :

<?php  
  try{
    $db2 = new PDO($dns,$utilisateur,$motdepasse,array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'));
    $db2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  }catch(PDOException $e){
    echo 'Probleme de base de données';
    exit();
  }
?>

fichier recup_connexion2.php :

require_once('connexion2.php');
    $recordset = $db2->query("SELECT champs à récupérés....
                                FROM tables....
                                  WHERE conditions....
    $data = $recordset->fetchAll(PDO::FETCH_ASSOC);
    if(count($data) == 0){
      header($_SERVER'SERVER_PROTOCOL']." 400 Bad Request"); 
    }
    else{
        /* Traitement des données récupérées */
     foreach ($data as $key => $valeur) {
           codes.....
      } 
         header("Content-Type: application/json; charset=utf-8");
         echo json_encode($data);
    } 
?>

fichier Javascript ou inséré le code dans HTML:

jQuery(function($){
    $.get("php/recup_connexion1.php",function(data){    
            /* Traitement des données récupérées de la connexion1 */    
    },"json");
    $.get("php/recup_connexion2.php",function(data){
        /* Traitement des données récupérées de la connexion2 */
    },"json");

});

bon c'est un code fait à la rache :) mais c'est surtout pour te montrer une méthode que j'ai déjà réalisée bon plus propre que sa mais si sa peut aidé car je sais que cela fonctionne très bien :).

Pour ton cas tu n'aura qu'un appelle au chargement de ta page a faire en jquery se qui te permettra de récupéré les information souhaiter de ta deuxième base de donnée :).

C'est se que j'ai déjà réaliser sur un projet qui avait deux base de donnée sur deux serveur différent 1 serveur possédai une boutique prestashop et l'autre des données a récupéré donc j'avais deux appels sur différent fichiers php au chargement du site pour récupéré les informations souhaitées.

Mais si quelqu'un connait une manière de faire deux instances PDO dans un même fichier, j'aimerais également connaître la solution :)

de rien, sa me fait plaisir d'essayer même si j'ai pas la réponse :) car on ma déjà aidé sur d'autre sujet donc si je peut aidé j'essaye :-)

WebMaster Junior chez 123plantes

Fre3z69
Auteur

Merci, ça peux être une idée, mais le truc c'est que j'ai eu confirmation que ni l'un ni l'autre des serveur mysql pouvais accepter les connexion à distance.

Je me suis alors poser la question à savoir, vu qu'on peux inclure des fichier avec un http:// dedans, ne pourrait on pas se servir du fichier de connexion du serveur 2 pour l'utiliser sur le serveur1?
Et si oui, y a t'il des risque de failles ou autre avec les includes http:// ?

Merci pour l'aide

Cordialement

Oula la je pourrai pas te dir car je n'est jamais utilisée un include avec http:// :p

Après logiquement si tu inclue ton fichier de connexion2 dans une page php pour exécuter des requêtes sa reviens au même que si tu faisait ta connexion PDO normale donc niveau sécurité cela reste (je pense) le même principe qu'une connexion normale.

Donc vérifier et protégée tes données avant exécution des requêtes.

Après je peut pas t'en dir plus car je ne l'est jamais réaliser mais cela revien au même que l'exemple que je tes donner au niveau des inclusion des fichier donc je pense que c'est faisable.

Il faudrait également voir si l'include est accepter :).

tien moi au courant :)

WebMaster Junior chez 123plantes

Houla doucement,

tu veux intégrer un fichier distant avec la function include et ce fichier contient des informations de connections à ta bdd et le fichier passe en clair.

En gros, si je suis un vilain garçon, je sniffe ton réseau, j'ai tes identifiants et je vole toutes les infos sur ta bdd.

A mon avis, ce n'est pas du tout une bonne solution !

PS : pour des raisons de sécurité, très souvent chez les prestataires de services, les connexions SQL ne sont possibles que depuis la machine hôte uniquement.

Ciao

Fre3z69
Auteur

Bin je vois pas comment faire alors.

Bon en tout cas merci à vous, défois faut savoir abandonner, mais bon.

Sinon ton principe ksta, je suis d'accord avec, mais vu que je ne peux pas me connecter à distance, comment je peux faire?

Merci en tout cas,

cordialement

Fre3z69
Auteur

Sur un autre forum, on m'a parler de " cURL", qu'en pense tu?

Sinon on m'a dit qu'avec un "file_get_contents", je pouvais aussi récupérer passer les infos a mon site BDD2

tu connaitrais des tuto sur cela?

Merci en tout cas

Cordialement

C'est vrai Orijin j'avais pas penser à sa :(.

Après je connais pas du tous Minecraft donc je connais pas les possibilités sur l'interaction avec un site externe.

Après se que tu peut essayer de voir c'est par un fichier Json ou XML que tu récupère en jQuery comme une sorte de flux.

tu pourrais par exemple sur le serveur de MineCraft faire une page php qui te permet de récupéré les données (NON importante!!!) et te les insérée dans un fichier Json puis tu les récupère de la même manière (appel jQuery) que tu pourrai afficher par la suite :).

Après je vois pas vraiment se que tu veut faire :)?
Quel sont les informations des joueurs que tu veut récupérée? car si tu veut récupérer leur mot de passe ou autre informations sensible la non plus c'est pas conseiller niveau sécurité comme la mentionner Orijin.

Se que j'ai compris c'est que tu à un site WEB et que tu veut y incorporer une boutique et que tu veut récupéré les joueurs mais pour faire quoi?

Je demande sa pour mieux comprendre :-).

WebMaster Junior chez 123plantes

Fre3z69
Auteur

Alors voila.

Enfaite c'est simple.

Sur Minecraft (colo ou multi) tu as des items, pioche, hache etc etc..
Avec ma boutique, je prévois de permettre à mes utilisateurs le désirant, d'acheter des outils et des items via des crédits qu'ils achètent en argent IRL.
La transaction jusqu’au panier ne pose pas de problème, tout ce gère sur le site, mais pour envoyer les données au serveur de Minecraft, afin de donner les items à l'utilisateur que les a acheté, c'est là qu'il y a un problème, et les infos à transmettre au serveur de Minecraft sont juste, l'Id du et des items, le nombre par items, et le nom de l'utilisateur qui les as payés.

Pour récupérer des infos tels que la liste des items choisis, et leur nombre, j'ai pas de soucis avec ça, c'est que pour basculer d'un serveur BDD à un autre.

Par contre ton idée de flux xml, m'intéresseras aussi, pour lister les joueurs connectés au serveur ;-), mais ceci est une autre histoire ^^

Merci de votre aide.

Cordialement

ha ok :)

Je vois, mais je ne vois pas le moyen :( car niveau sécuriter c'est juste :( car tu pourrait faire lors de la validation d'un achat poster tes variable à un fichier php sur Minecraft et depuis se fichier les inséré au personne qui ont acheter mais le problème est qu'il faut vérifier si la personne a belle et bien acheter car n'importe qui pourrait envoyer c'est donner et se les ajouter :(

La le meilleur moyen est de crée ta boutique directement sur ton serveur comme sa tu peut vérifier avec un token de sécuriter lors de la connexion.

après sinon tu pourrai avoir une autre piste de plus sa serai le localStorage :) mais je ne connais pas les failles de se système si il en existe.

car tu peut faire lors de la connexion pour l'achat crée un token de sécuriter et l'inséré dans le localStorage.
Puis dans un second temps lors de l'achat, tu redirige la personne en envoyant les données dans l'Url sur un fichier php que tu crée sur Minecraft qui se chargera de vérifier si la personne a belle et bien acheter gràce au localStorage et si oui tu insère sont achat dans sa partie :) en l'informant que tous c'est bien passer et en affichant un lien le redirigeant vers ta boutique sinon tu l'informe qu'il na pas fini son achat et qu'il doit revenir pour finir :)

j'ai déja utilisée le localStorage avec une bibliothèque jQuery ( jCrypson ) qui crypte les données et en plus Grafikart à fait un bon tuto expliquant le localStorage :)

localStorage

WebMaster Junior chez 123plantes