IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Communication entre mon appli et un site web


Sujet :

C++Builder

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut Communication entre mon appli et un site web
    Bonjour à tous,

    mon application doit envoyer le résultats de divers tests et calculs sur mon site internet. Celui-ci est écrit en PHP et utilise MySQL pour les bases de données.

    Mon programme est écrit en C++ Builder et devra être diffusé à un grand nombre d'utilisateurs.

    Je me demande comment transférer les données dans ma base PHP. Je cherche la solution la plus sécurisée et la moins contraignante possible (je vous expliquerais un peu plus bas).

    Pour l'instant j'ai envisagé les solutions suivantes :
    mon programme se connecte à la base MySQL et y poste les informations. Problème : le stockage du mot de passe de connexion à la base de donnée : si le mot de passe et l'identifiant sont crypté cela est il assez sûr ? D'un point de vue souplesse il faudrait que ce mot de passe puisse être modifié (à moins d'un patch là je vois pas trop comment).

    mon programme ouvre le navigateur sur l'url d'un script PHP prenant les informations à poster via GET (donc dans l'url). Dans ce cas afin d'éviter que quelqu'un puisse poster n'importe quoi il faut que j'encode/crypte les données.

    Pour l'instant je tendrais plutôt vers la deuxième solution.
    Merci d'éclairer ma lanterne de vos expérience, idée et conseils !
    Neilos

  2. #2
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Pour la deuxième solution, tu n'es pas obligé d'ouvrir une page dans le naviguateur avec tes variables passés en paramètre. En effet, tu peux "simplement" ouvrir une socket vers ton serveur puis, via une requête http, envoyer tes données a la page en question. Tout ceci de facon completement transparent pour l'utilisateur.

    J'en parle dans ce thread et j'en donne un exemple ...
    http://www.developpez.net/forums/viewtopic.php?t=313342

    Apres si tu prefere ecrire directement dans la base de données, il y a peut etre des composants deja tout fait qui font ce que tu cherche a faire, de facon sécurisé. Sinon tu as l'API mySQL mais je ne sais pas ce que tu peut faire niveau sécurité ...

    Cordialement

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    C'est vrai que j'avais déjà posé la question...complètement oublié ça moi

    Merci beaucoup, je crois que je vais procéder comme tu le montre dans ton exemple !
    Neilos

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Alors voilà j'ai essayé mais cela ne fonctionne pas.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
       AnsiString request = "";
       AnsiString arg;
       AnsiString arg_size;
     
       if ( Edit1->Text.Length() > 0 )
       {
          arg = "pseudo=" + Edit1->Text;
          arg_size = arg.Length();
     
             // Ouverture de la connexion
          Socket->Active = true;
     
          if ( ! Socket->Active )
          {
             request = "POST ./monscript.php HTTP/1.1\r\n";
             request = request + "Host: x.x.x.x:port";  // Ici les vrais valeurs de l'ip et du port
             request = request + "\r\nConnection: Close\r\n";
             request = request + "Content-type: application/x-www-form-urlencoded\r\n";
             request = request + "Content-length: "+arg_size+"\r\n\r\n";
             request = request + arg+ "\r\n" ;
     
             try
             {
                Socket->Socket->SendText( request );
             } catch ( ... )
             {
                MessageDlg("Erreur de socket", mtError, TMsgDlgButtons() << mbOK, 0 );
             }
     
             Socket->Active = false;
          } else
             MessageDlg("Impossible d'envoyer les infos", mtError,
                                                 TMsgDlgButtons() << mbOK, 0 );
       }
    Socket est un TClientSocket.

    Y a t il un moyen de savoir si la requête à bien été exécutée ?
    Que le script PHP que j'appel me retourne un code de résultat ?
    Le script PHP récupère le paramètre pseudo via la méthode GET cela convient il ?

    Merci d'avance pour ton aide !
    Neilos

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    La requete http envoyé est en POST donc si ta page PHP recupere le pseudo par la meme GET ca risque de ne pas marché.

    Il faut soit que tu arranges ta page php pour recuperer via méthode POST soit modifier la requete elle même. Une ptite recherche rapide sur le net te donnera la syntaxe a adopter pour ta requete

    Pour le retour:

    Tant qu'on est dans les sockets, mis a part le fait de pouvoir envoyer des données, tu peux aussi en recuperer.
    Il va donc falloir que tu récupère la réponse du serveur d'une part.

    D'aute part, ce que tu vas recuperer va dépendre de ta page PHP.

    Par exemple, dans ton fichier PHP:

    //execution de la requete
    if (!mysql_query(...))
    echo("la requete s'est déroulé correctement");
    else
    echo ("erreur");

    Donc ce que tu vas récuperer ca va etre soit "la requete s'est déroulé correctement" soit "erreur".

    J'ai schématisé un ptit peu mais le principe ca doit être ca

    Voilà j'espere avoir répondu a tes questions et si d'autres ont des idées plus pertinentes qu'ils n'hésitent pas

    Bon courage

    ++

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Merci beaucoup pour les informations.

    Je débute un peu avec tout ça !
    Neilos

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/07/2009, 13h47
  2. communication entre 2 applis de langages different..
    Par questionneuse dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 01/03/2008, 17h53
  3. Recherche d'un outil analyser les dépendances entres les fichiers d'un site web PHP
    Par nkdb dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 06/01/2007, 20h38
  4. Réponses: 5
    Dernier message: 23/09/2006, 13h18
  5. lien relatif entre page d'un même site web
    Par lodan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 26/06/2006, 14h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo