Hallo Pipolino,
Php hab ich praktisch noch nie programmiert, daher wirds keinen Beispielcode geben.
Aber ein "Kochrezept" werde ich schon hinbekommen:
Das Speicherscript:
Du übergibst das, was Du bisher in das Cookie speicherst als GET-Parameter, also: speichern.php?daten=blablubber
(Kodieren der unzulässigen Zeichen mit escape() nicht vergessen)
Falls Du mehr Daten hast, schreibst Du sie in ein verstecktes Feld eines Formulares und verwendest method="post"
Im Script muss Du dann nur den Parameter "daten" auslesen und mit den richtigen HTTP-Header ausgeben.
Die Header solltest Du so ausgeben können:
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename="spielstand.dat"");
print($_GET['data']); //Ausgabe der Daten, bin mir nicht sicher, ob das genau so geht.
Du kannst als Content-Type auch was anderes nehmen, z.B. text/plain, spielt aber eigentlich keine Rolle, da man die Datei sowieso nur speichern soll.
Dateinamen kannst Du natürlich auch nen anderen angeben. Der Anwender kann den natürlich frei wählen, das ist nur ein Vorschlag.
Das Öffnenscript:
Du bastelst ein Uploadformular (siehe Selfhtml ;-) und nimmst im Script nur die Datei entgegen und schreibst die Daten an einer Stelle in den HTML-Quelltext. z.B. in einen JavaScript-String, so dass Du da mit JavaScript einfach ran kommst.
Einlesen solltest Du die Datei so können:
$handle = fopen ($_FILES['data']['tmp_name'], "r");
$contents = fread ($handle, filesize ($_FILES['data']['tmp_name']));
fclose ($handle);
Dann musst Du evt noch irgend welche Zeichen ersetzen, damit Du das ausgeben kannst. (z.B. " durch " für JavaScript) oder das format Prüfen.
Du kannst Dich natürlich auch einfach darauf verlassen, dass der Benutzer nur richtige Spielstände hochläd.
Wenn er das nicht tut, fliegt ihm halt das Javascript um die Ohren.
Wenigstens irgend eine Makierung am Dateianfang sollte man aber überprüfen, um irtümmliches hochladen falscher Dateien zu vermeiden:
if(substr($content, 0, 31) == "clowntheaterpipolino-spielstand:") {
//Ok, ausgeben
}
else {
//Fehlerseite ausgeben
}
Grüße
Daniel