Dateiupload
Mit PHP und der http-Dll von Bl@ckSp@rk
v. 1.0.1
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
- data = ""; // Dies wird unser String, in welchen wir den gesammten Dateiinhalt laden.
- file = file_text_open_read(argument0); // Dann öffnen wir die Datei. (Der Name wird uns durch argument0 übergeben.
- while (!file_text_eof(file)) { // Solange das Datei Ende nicht erreicht wurde:
- data += file_text_read_string(file); // - lese eine Zeile aus der Datei
- data += chr(10); // - füge einen Zeilenumbruch an unseren String
- file_text_readln(file); // - springe eine Zeile weiter in der Datei.
- }
- file_close();
- http_add_post("data",data); // Wir fügen unseren String in den http-Request hinzu.
- http_add_post("password","hallo123"); // Dazu noch ein Passwort damit nicht jeder einfach Dateien hochladen kann
- http_add_post("filename",argument1); // Und wie die Datei auf dem Server heißen soll lassen wir uns mit argument1 übergeben.
- 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
- return request;
Nun können wir einfach eine Datei hochladen:
GML-Quellcode
- http_init(); //Initialisieren der http.dll
- 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
- show_message(answer); // Nun lassen wir uns noch die Antwort vom Server ausgeben.
- http_free();
Der PHP-Teil
Etwas PHP Kenntnis wird vorrausgesetzt. Wir erstellen eine neue php Datei mit Namen upload.php
PHP-Quellcode
- <?php
- $file = $_POST['data']; // Da wir mit POST arbeiten empfangen wir so die Daten von unserem Spiel
- $password = $_POST['password'];
- $name = $_POST['filename'];
- if ($name =="" || $password == "" || $file == "") { // Hier wird überprüft ob alle Daten (Datei, Passwort , Name) übertragen wurden
- echo "Daten nicht uebermittelt"; // und ggf. ein Fehler zurückgegeben
- exit;
- }
- if ($password == "hallo123") {
- $ext = ".txt"; // Zur Sicherheit wird die hochgeladene Datei immer als .txt abgespeichert. Dies kannst du hier ändern
- $f=fopen($name.$ext,"w+"); // Wenn alles stimmt wird eine neue Datei geschrieben (Falls es bereits die gleiche Datei gibt wird diese überschrieben.
- fwrite($f,$file);
- fclose($f);
- echo "Datei erfolgreich hochgeladen";
- }
- else {
- echo "Passwort falsch";
- }
- ?>
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 ()