externe Datenbank



  • Ich kann halt kein PHP. Weder Zugriffe C++ <-> PHP noch PHP <-> MySQL .
    Außerdem müsste man die Skripte doch auf dem Server "laufen" lassen, oder nicht ?

    Kann man sich nicht anders die IP schicken, halt automatisch ?



  • DarkShadow44 schrieb:

    Ich kann halt kein PHP. Weder Zugriffe C++ <-> PHP noch PHP <-> MySQL .

    Zugriff C++ <-> PHP ist nicht so schwer, weil das nur eine HTTP-Anfrage ist, wofür es z.B. libcurl gibt.

    PHP programmieren müsstest du dann lernen. Wenn du schon C++ programmieren kannst, sollte das aber nicht sonderlich schwierig sein. Etwas Zeit würde ich aber schon dafür einplanen, vor allem musst du dich unbedingt nach "SQL injection" erkundigen, bevor du solche php-Skripte schreibst. PHP lädt leider dazu ein, bestimmte Sicherheitslücken unabsichtlich zu öffnen.

    DarkShadow44 schrieb:

    Außerdem müsste man die Skripte doch auf dem Server "laufen" lassen, oder nicht ?

    Ja, deswegen schrieb ich auch, du brauchst einen Server, auf dem du Skripte starten kannst. PHP-Skripte sollte aber nahezu jeder Webhost ausführen können.

    DarkShadow44 schrieb:

    Kann man sich nicht anders die IP schicken, halt automatisch ?

    Nein, ein zentraler Server ist (würde ich sagen) das einfachste, was man dafür nehmen kann.



  • Gibts keine vorgefertigten PHP-Skripte dafür ? 🙄

    Naja, wüstest du einen Webhost bei dem man sowas temporär (gratis) hochladen & testen kann, so ne Art "gesicherte Umgebung" ? Möglichst ohne Registrierung...

    So was wäre toll zum Testen...

    Also erstmal zum Testen; danach müsste ich noch einen finden, der Zugriffe Dritter erlaubt. 😞



  • DarkShadow44 schrieb:

    Gibts keine vorgefertigten PHP-Skripte dafür ? 🙄

    Nicht dass ich wüsste, denn normalerweise schreibt man so einen Service nicht in PHP, denk ich.

    DarkShadow44 schrieb:

    Naja, wüstest du einen Webhost bei dem man sowas temporär (gratis) hochladen & testen kann, so ne Art "gesicherte Umgebung" ? Möglichst ohne Registrierung...

    So was wäre toll zum Testen...

    PHP/MySQL-Unterstützung ist so ziemlich der Standard bei günstigen Hosting-Angeboten. Ob und wo es sowas kostenlos gibt, weiß ich aber nicht.

    Zugriffe Dritter sind bei jedem Webspace erlaubt, sonst wäre es kein "Webspace". Deine PHP-Skripte müssen sicherstellen, wer Zugriff erhält und wer nicht.

    Achso, nur falls das nicht klar wurde: PHP-Skripte sind *nicht* die einzige Möglichkeit. Es gibt noch viele, viele andere Möglichkeiten. Nur praktisch alle realisierbaren Möglichkeiten setzen einen zentralen, bekannten Server voraus.
    Ich habe nur PHP-Skripte genannt, weil die bei nahezu jedem Webhoster ausgeführt werden können und dir damit nur geringe (wenn überhaupt) Kosten entstehen.



  • Mir fällt da auf Anhieb grad nur ohost als kostenloser PHP Hoster ein. Weiß aber nicht inwiefern sich die Nutzung mit deren Regeln beißt. Ansonsten gäbe es auch noch google appengine, da gibt es zwar kein PHP aber dafür Python und Java.

    Und so ungewöhnlich finde ich das gar nicht dafür einen Webserver zu nutzen. Eine extra Serveranwendung die nur diese Liste verwaltet wäre da eher übertrieben. Viele Highscore Systeme dürften ein ähnliches Prinzip nutzen. Vor allem geht das beim Client durch die Firewall falls das abrufen von Internetseiten erlaubt ist.



  • Zugriffe Dritter sind bei jedem Webspace erlaubt

    Nicht unbedingt, manche dürfen nur privat genutzt werden. Ich bräuchte aber was öffentliches.

    Dürfte außerdem einiges an Traffic geben....

    Könntest du mir ein kurzes Beispiel geben zu C++ <-> PHP ?

    Und wie kann ich das PHP-Dokument dann hochladen und "aktivieren" ?
    Gibt es für sowas eine "Übungsumgebung" ?

    So was hab ich noch nie gemacht.... 😞



  • DarkShadow44 schrieb:

    Zugriffe Dritter sind bei jedem Webspace erlaubt

    Nicht unbedingt, manche dürfen nur privat genutzt werden. Ich bräuchte aber was öffentliches.

    Das nennt man dann aber normalerweise nicht Webspace, sondern Storage oder ähnlich.
    Speicherplatz, den du nur privat nutzen darfst, das verhält sich im Grunde ja nicht anderes als eine externe Festplatte: Nur du kannst darauf zugreifen, sonst niemand. Webspace nennt man das normalerweise nur, wenn auch andere Leute die Daten abrufen können.

    DarkShadow44 schrieb:

    Dürfte außerdem einiges an Traffic geben....

    Wenn du mit viel Traffic rechnest, kannst du kostenlose Angebote gleich vergessen.

    DarkShadow44 schrieb:

    Könntest du mir ein kurzes Beispiel geben zu C++ <-> PHP ?

    In einer anderen Sprache als C++ wäre das sicherlich einfacher, aber in C++ könntest du z.B. libcurl benutzen.

    DarkShadow44 schrieb:

    Und wie kann ich das PHP-Dokument dann hochladen und "aktivieren" ?

    Die PHP-Dateien sind fest. Alles, was das C++-Programm macht, ist eine URL aufrufen. Hinter dieser URL steckt das PHP-Skript, das dann die benötigte Arbeit macht (z.B. die gerade gelesene IP in eine Datenbank als "bekannter Host" eintragen).

    DarkShadow44 schrieb:

    Gibt es für sowas eine "Übungsumgebung" ?

    Ja: http://www.apachefriends.org/en/xampp.html



  • struct _sql_info
    {
    	char IP[16];
    	char stringS[3][20];
    	char stringM[3][50];
    	char stringL[100];
    	int ints[20];
    	bool bools[30];
    
    	bool used; //nur intern, nicht exportieren
    };
    

    Diese Struct verwende ich.

    Je mehr Host ich allerdings habe, desto größer ist der Traffic für jeden Client, oder nicht ?
    Was zählt den als Traffic: PHP <-> MySQL oder C++ <-> PHP oder beides ?

    Vielleicht könnte ich ja die Anzahl der Hosts per PHP limitieren...
    Könnte PHP auch "tote" Hosts löschen ?

    Sorry schon mal für die vielen Fragen...

    Wie viel Traffic ist den durchschnittlich erlaubt ?

    Außerdem ist halt das Problem, dass der User durch meinen C++ Zugriff keine Werbung sieht 😞
    Darum wollen Gratisanbieter sowas ja eher nicht. 😡

    EDIT: d.h. dass PHP zu MySQL und C++ zu PHP sehr wahrscheinlich geht ?
    Aber wie starte ich das PHP-Skript (für den user unsichtbar), und wie kommunizieren PHP und C++ ? Durch sockets ? Aber woran binde ich den Socket des PHP Skripts, es sollen ja mehrere gleichzeitige Zugriffe möglich sein.

    Bitte hilf mir 😞



  • DarkShadow44 schrieb:

    EDIT: d.h. dass PHP zu MySQL und C++ zu PHP sehr wahrscheinlich geht ?
    Aber wie starte ich das PHP-Skript (für den user unsichtbar), und wie kommunizieren PHP und C++ ? Durch sockets ? Aber woran binde ich den Socket des PHP Skripts, es sollen ja mehrere gleichzeitige Zugriffe möglich sein.

    Das PHP Skript liegt auf dem Server. Wenn du nun aus deinem Programm zu dem Webserver verbindest und die entsprechende Seite abrufst bekommst du die Ausgabe des PHP Skripts gesendet. Zum Abrufen kannst du z.B. libcurl verwenden.



  • Aber WIE tauschen C++ und das PHP Skript Daten aus ??



  • DarkShadow44 schrieb:

    Aber WIE tauschen C++ und das PHP Skript Daten aus ??

    Über eine HTTP-Anfrage. Dafür kannst du z.B. libcurl verwenden.



  • Ich finde aber nur die Möglichkeit den Quelltext des Skripts runterzuladen. 😞
    PHP zu C++ erst recht nicht..



  • DarkShadow44 schrieb:

    Ich finde aber nur die Möglichkeit den Quelltext des Skripts runterzuladen. 😞

    Dann ist der Server falsch konfiguriert und führt das PHP-Skript nicht aus.

    Schau dir zum Beispiel die URL http://www.c-plusplus.net/forum/index.php an. Das ist ein PHP-Skript namens "index.php". Der Server schickt aber nicht den Quellcode, sondern führt das Skript aus. Der normale Nutzer sieht nicht, dass das ein PHP-Skript ist.



  • sprintf_s(url,"http://Dwww.example.de/index.php?data=abcdefghij");
    
    	hInetOpen = InternetOpen("FTP\n",INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); 
    	hInetUrl = InternetOpenUrl(hInetOpen, url, NULL,0,0,0);
    
    	int bytes;
    	char buffer[104];
    
    	while(!InternetReadFile(hInetUrl,buffer,104,(LPDWORD)&bytes));
    

    Geht das etwa so ?

    Wie kann ich dem Skript mit "?data=" Daten übertragen (und mit PHP auslesen) ?

    Und wie warte ich so bis die Anwort kommt ?



  • Hab so was ähnliches mal mit c# gemacht, sollte für dich also kein Problem sein das ganzu in cpp zu implementieren.

    private void BtnSend_Click(object sender, EventArgs e)
    {
        // used to build entire input
        StringBuilder sb = new StringBuilder();
    
        // used on each read operation
        byte[] buf = new byte[9000];
    
        // delate last data gried view
        dataGridView1.Columns.Clear();
    
        // build the command string and prepare the web page we will asking for
        string strCommandUrl = string.Empty;
        strCommandUrl = @"http://www.******.****/mimo/phptest/client_query.php5?table=";
        strCommandUrl += strTable.Text;
        strCommandUrl += "&query=";
        strCommandUrl += strQuery.Text;
        strSendingCommand.Text = strCommandUrl;
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strCommandUrl);
    
        // execute the request
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    
        // we will read data via the response stream
        Stream resStream = response.GetResponseStream();
    
        string tempString = null;
        int iCnt = 0;
    
        do
        {
            // fill the buffer with data
             iCnt = resStream.Read(buf, 0, buf.Length);
    
            // make sure we read some data
            if (iCnt != 0)
            {
                  // translate from bytes to ASCII text
                  tempString = Encoding.ASCII.GetString(buf, 0, iCnt);
    
                  // continue building the string
                  sb.Append(tempString);
            }
        }
        while (iCnt > 0);
    
        string strTmp = sb.ToString();
    
        // bugfix by php DOM/XML creation. 
        strTmp = strTmp.Replace("<DataBase/>", "<DataBase>");
        strTmp= strTmp.Insert(strTmp.Length, "</DataBase>");
    
        strResponse.Text = strTmp;
    
        // Save the correct xml file to the given location
        StreamWriter strWriter = new StreamWriter(@"C:\***\WebRqTest\Test\Db.xml");
        strWriter.Write(strTmp);
        strWriter.Close();
    
        // create a dataset for the dategridview
        DataSet dsBook = new DataSet(strTable.Text);
    
        // usw ......
    

    Hoffe das ich Dir damit etwas weiterhelfen konnte.

    MfG
    mimo


Anmelden zum Antworten