Hallo ich hab ne kurze Frage: ich möchte in meine Map Datenbank einen "User Upload" einbauen. Darin soll der User 2 Felder kriegen:
Kartenname und Author. Zum Server wird dann folgendes gesendet:
Kartenname|Author|Datum+Zeit -> Server übernimmt weiß bescheid fürs nächste mal
Jetzt das Problem: Die Daten liegen auf einen
FTP und ich will die
FTP daten nicht in das Programm schreiben aus angst jemand könnte sie mit WireShark rausrippen und unfug damit machen. Ausserdem stehe ich vor dem Problem das ich gern das Datum / Uhrzeit vom Server nehmen würde, damit Clients nicht absichtlich das Datum manipulieren können lokal.
Wie stelle ich das am dümmsten an? evtl mit einem PHP script das den Upload per Parameter annimmt und auswertet? Leider kann ich kein PHP. Bin für Vorschläge offen
Edit:
Ich habe gerade diesen Lösungsansatz gefunden und werde ihn mal ausprobieren:
Zitat von
Catbytes:
Wenn Du schon die
Indy-Komponenten benutzt, warum nimmst Du nicht "Put"?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
PutDataStream: TStringStream;
Datei: TFileStream;
Stream: TStream;
begin
if (OpenDialog1.Execute) then
Datei := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
Stream := TStream.Create;
Stream := Datei;
PutDataStream := TStringStream.Create('');
try
IdHTTP1.Put('http://wasauchimmer.de', Stream, PutDataStream);
Memo1.Text := PutDataStream.DataString;
finally
PutDataStream.Free;
Stream.Free;
end;
end;
In PHP sieht das ganze dann so aus, um mit PUT-Dateien zu empfangen:
Code:
/* PUT Daten kommen in den stdin Stream */
$putdata = fopen("php://stdin","r");
/* Eine Datei zum Schreiben öffnen */
$now = date("Y-m-d - H_i_s");
$fp = fopen("put/".$now.".txt","w");
/* Jeweils 1kB Daten lesen und
in die Datei schreiben */
while ($data = fread($putdata,1024))
fwrite($fp,$data);
/* Die Streams schließen */
fclose($fp);
fclose($putdata);
Pfad (put/) halt anpassen.