Daten über das Internet senden

  • Hallo Zusammen,

    ich habe ein Programm für einen Kunden geschrieben, welches nun auch eine "Fehler-Senden"-Funktion bekommen soll, falls es mit dem Programm Schwierigkeiten gibt.
    Zur Zeit habe ich es so realisiert:

    Spoiler anzeigen
    [autoit]


    If MsgBox(0x4 + 0x40 + 0x40000, $ProgName, "Wollen Sie ein Debug-Protokoll an den Administrator schicken?" & @CRLF & "Sie helfen hiermit das Programm bei Fehlern zu verbessern.",0,$hGUI) = 6 Then
    Local $hnet_senden = InetRead("https://www.........../php.php?check1=" & $var1 & "&check2=" & $var2 & "&check3=" & $var3 & "&check4=" & $var4 & "&check5=" & $var5 & "&check6=" & "code")
    InetClose( $hnet_senden)
    EndIf

    [/autoit]


    Danach fängt die PHP-Seite den Link ab, prüft ob er valide ist und speichert die angegangenen Daten in eine Datenbank.
    Leider ist es mir schon passiert, dass sich das Programm beim Senden verabschiedet hat :thumbdown:
    Auch kann es sein, das auf einem Client kein Internet Explorer installiert ist, der aber für die Funktion (InetRead) vorgesehen ist.
    Dieses sind Probleme für das Debug-Protokoll.

    Als weiteren Punkt soll auch die dazugehörige ".ini"-Datei verschickt werden, die alle Einstellungen gespeichert hat.
    Ich dachte erst, ich kann es per E-Mail-Funktion lösen, doch dann müsste ich alle "smtp"-Einstellungen wie auch das Passwort hinterlegen,
    welches sich bestimmt mit einem Hex-Editor oder so etwas auslesen lassen könnte. Das weiß ich nicht!

    Ich hoffe ihr könnt mir wenigstens zum Punkt 1 helfen. Gibt es da eine andere Vorgehensweise oder eine bessere Übertragung der Daten?
    Zumal eine URL ja auch nicht unbegrenzt lang sein darf.

    Lieben Gruß, Anna :party:

    Die Anna :*

    "Wo kämen wir hin, wenn jeder sagte wo kämen wir hin, und niemand ginge, um zu sehen, wohin wir kämen, wenn wir gingen..." :wacko:

    Einmal editiert, zuletzt von AnnaM (28. November 2012 um 11:11)

  • Ich persönlich würde es per TCP oder WinHTTP lösen (wobei ich auch bei TCP HTTP benutzen würde, von dem her ist WinHTTP wahrscheinlich einfacher). Über WinHTTP könntest du z.B. eine POST Nachricht an deinen Server senden mit der Datei die du übertragen möchtest als Inhalt. Dafür wird kein Internet Explorer benötigt und es ist vermutlich wesentlich zuverlässiger als deine jetzige Lösung.

  • Hallo name22,

    danke für deine Antwort. Ich habe mir gerade die Hilfedatei angeschaut, aber ich habe keine Ahnung, wie ich so etwas integriere und wie dann der Server dafür aussehen muss.
    Also wenn du ein kleines Beispiel hättest, wäre ich dir dankbar. Ich arbeite mich gerade durch das Forum und schau schon, wie es umgesetzt wird.
    Ich kenne es bis jetzt noch nicht. Ich schau mal und melde mich wieder :)

    Vielen Dank schon einmal für den Tipp. *gg*

    Die Anna :*

    "Wo kämen wir hin, wenn jeder sagte wo kämen wir hin, und niemand ginge, um zu sehen, wohin wir kämen, wenn wir gingen..." :wacko:

  • Ich kenne mich nicht wirklich mit PHP aus, aber du könntest mal mit der $_POST Variable oder ähnlichem experimentieren. Wenn Daten per POST an ein PHP script gesendet werden, dann landen die normalerweise in der $_POST Variable des Scripts. Von da aus kannst du sie ja dann entsprechend verwalten. Es sollte auch kein Problem sein, alle Daten in den Content Bereich des HTTP Requests zu packen und nachher im PHP Script wieder zu trennen.
    Der WinHTTP Part ist auch recht simpel. Dazu finden sich auch Beispiele in der Hilfedatei von WinHTTP und im englischen AutoIt Forum.

  • Hallo,

    also das senden mit der Post-Variablen habe ich raus. Ganz einfach :)

    [autoit]


    $sPost = "var1=inhalt&var2=inhalt2"
    $sResult = _WinHttpSimpleRequest($hConnect, "POST", "/input.php", Default, $sPost)

    [/autoit]

    Aber wie ich das nun mit einer Datei mache?
    Man könnte es binär umformen und dann senden, aber ob das so schlau ist?

    Die Anna :*

    "Wo kämen wir hin, wenn jeder sagte wo kämen wir hin, und niemand ginge, um zu sehen, wohin wir kämen, wenn wir gingen..." :wacko:

  • Hallo,

    das Problem ist hier, dass die .ini mal größer und mal kleiner ausfällt. Je nach Nutzer. Deshalb wollte ich es als Datei schicken.

    Die Anna :*

    "Wo kämen wir hin, wenn jeder sagte wo kämen wir hin, und niemand ginge, um zu sehen, wohin wir kämen, wenn wir gingen..." :wacko:

  • Ich verstehe leider nicht wo da das Problem liegt... Wie willst du die Datei sonst übertragen? Das ist die Standardmethode um Dateien an einen Webserver zu senden. Und die Größenvariation zwischen den Dateien hast du doch sowieso in jedem Fall, oder?
    Außerdem schickst du es ja als Datei... Dieser String ist deine Datei, abgesehen von einem Index Eintrag und ein wenig drumherum auf einer Festplatte ist da nicht mehr dran ^^.
    Ich weiß nicht wie dein Server aussieht, oder ob du da vollen Zugriff drauf hast, aber man könnte die Daten auch mit AutoIt beim Server entgegennehmen. Dann könntest du die Daten in jeder beliebigen Form übertragen ohne dir Gedanken über jegliche Standards machen zu müssen. Ich hab sogar mal einen kleinen HTTP-Server für mein Heimnetzwerk in AutoIt geschrieben. Aber ob das wirklich eine Alternative ist :S...