Datei-Upload mit der http-Dll

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Datei-Upload mit der http-Dll

      Dateiupload
      Mit PHP und der http-Dll von Bl@ckSp@rk
      v. 1.0.1


      Hi zusammen.
      Ich hab ein schnelles Script erstellt das eine beliebige Datei mit der http-Dll hochlädt.
      Und dazu hab ich noch schnell jetzt ein Tutorial geschrieben:
      Der GM-Teil
      Zuerst erstellen wir ein neues Script namens "st_uploadfile".

      GML-Quellcode

      1. data = ""; // Dies wird unser String, in welchen wir den gesammten Dateiinhalt laden.
      2. file = file_text_open_read(argument0); // Dann öffnen wir die Datei. (Der Name wird uns durch argument0 übergeben.
      3. while (!file_text_eof(file)) { // Solange das Datei Ende nicht erreicht wurde:
      4. data += file_text_read_string(file); // - lese eine Zeile aus der Datei
      5. data += chr(10); // - füge einen Zeilenumbruch an unseren String
      6. file_text_readln(file); // - springe eine Zeile weiter in der Datei.
      7. }
      8. file_close();
      9. http_add_post("data",data); // Wir fügen unseren String in den http-Request hinzu.
      10. http_add_post("password","hallo123"); // Dazu noch ein Passwort damit nicht jeder einfach Dateien hochladen kann
      11. http_add_post("filename",argument1); // Und wie die Datei auf dem Server heißen soll lassen wir uns mit argument1 übergeben.
      12. request = http_request("meinserver.net","/upload.php"); // Dann senden wir den Request an den Server (trage deinen Servernamen ein ohne http und als 2 Argument das Verzeichnis + upload.php
      13. return request;
      Alles anzeigen


      Nun können wir einfach eine Datei hochladen:

      GML-Quellcode

      1. http_init(); //Initialisieren der http.dll
      2. answer = st_uploadfile("meinedatei.txt","datei_auf_dem_server.html"); // Mit arg0 übergeben wir den Dateinamen auf unserer Festplatte und mit arg1 den Namen der Datei auf dem Server
      3. show_message(answer); // Nun lassen wir uns noch die Antwort vom Server ausgeben.
      4. http_free();



      Der PHP-Teil
      Etwas PHP Kenntnis wird vorrausgesetzt. Wir erstellen eine neue php Datei mit Namen upload.php

      PHP-Quellcode

      1. <?php
      2. $file = $_POST['data']; // Da wir mit POST arbeiten empfangen wir so die Daten von unserem Spiel
      3. $password = $_POST['password'];
      4. $name = $_POST['filename'];
      5. if ($name =="" || $password == "" || $file == "") { // Hier wird überprüft ob alle Daten (Datei, Passwort , Name) übertragen wurden
      6. echo "Daten nicht uebermittelt"; // und ggf. ein Fehler zurückgegeben
      7. exit;
      8. }
      9. if ($password == "hallo123") {
      10. $ext = ".txt"; // Zur Sicherheit wird die hochgeladene Datei immer als .txt abgespeichert. Dies kannst du hier ändern
      11. $f=fopen($name.$ext,"w+"); // Wenn alles stimmt wird eine neue Datei geschrieben (Falls es bereits die gleiche Datei gibt wird diese überschrieben.
      12. fwrite($f,$file);
      13. fclose($f);
      14. echo "Datei erfolgreich hochgeladen";
      15. }
      16. else {
      17. echo "Passwort falsch";
      18. }
      19. ?>
      Alles anzeigen

      Nun laden wir die upload.php Datei auf unseren Webserver.

      Ich hoffe ihr habt alles verstanden. Bei Fragen schreibt einfach ;)

      edit: Danke an maxda. Dateien werden jetzt mit .txt Endung abgespeichert
      MfG xxskxx


      Weiteres:
      Tutorial [v 1.0.1] zum Download: (PDF Tutorial + Beispiel gmk/gm6)
      [Für GM8]
      [Für GM7]
      [Für GM6]

      http-Dll (von Bl@ckSp@rk) muss seperat geladen werden:
      [Download http.dll]

      [hide=Informationen zur Sicherheit]
      Da Game Maker Spiele einige Sicherheitslücken haben, muss man bei diesem Thema besonders auf die Sicherheit achten.
      Da man z.B. das Script einfach aus dem RAM lesen kann, (=> dadurch auch das Passwort + URL wo die Upload.php liegt) sollte man
      einstellen ,dass alle hochgeladenen Dateien nur Textdateien sind. Denn durch .php Dateien können Schäden am Server verursacht werden.
      Seit v 1.0.1 wird die Datei standardmäßig als Textdatei gespeichert.
      [/hide]
      -

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von xxskxx ()

    • Ehrlich gesagt hab ich das Tutorial nur wegen deiner Frage gemacht. Jedoch hast du bis dahin schon selbst eine Lösung gefunden wie ich dann bemerkt hab ;).
      Freut mich, dass es dir gefällt.


      edit: [Sicherheitslücke] Datei wird nun immer als .txt abgespeichert. Danke an maxda
      -

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von xxskxx ()

    • Benutzer online 1

      1 Besucher