Zurück   Flashforum > Flash und Server > Flash und Datenbanken

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-03-2007, 11:45   #1 (permalink)
Neuer User
 
Registriert seit: Aug 2006
Beiträge: 10
Variabeln von Standaloneplayer an Server schicken

Hallo,

ich möchte gerne ein Spiel von CD-Rom als Standaloneplayer erstellen. Die jeweilige Punktzahl soll dann an einen Server geschickt und per PHP gespeichert werden. Als Antowrt soll dann vom Server sowas wie "ok, ist gespeichert", oder "nee, geht grad nicht" kommen.

Ich habe nun schon einiges gelesen und probiert und bekomme es zumindest schonmal hin, daß das Spiel eine Antwort vom Server bekommt. Durch die Sicherheitsrestriktionen ist das ja shon nicht "mal eben" getan. Ich habe dazu folgendes veranstaltet:

1.
master.swf (das game) sieht folgender maßen aus:
Code:
punkte= 100;
loadMovieNum("http://www.meinHighscoreServer.de/slave.swf",1);
es ruft also auf dem entfernten server die "slave.swf" auf. das ist nötig, damit ich überhaupt mit entfernten PHP-Scripten arbeiten kann.

2. die slave.swf
Code:
vars = new LoadVars();
vars.onLoad = function() {
	_root.txt.text = this.test;
        _level0.output.text = this.test;
};
vars.load("http://www.meinHighscoreServer.de/test.php");

_root.txt.text = "loading...";
slave.swf führt also das Script test.php aus, welches mir die Daten speichern soll und die Antwort liefert (_root.txt.text = this.test).
_root.txt ist ein Textfeld innerhalb der slave.swf (Antowrt erscheint)
_level0.output ist ein Textfeld innerhalb der master.swf (Antwort erscheint nicht)

3. test.php
Code:
<?php
echo "test=Hallo";
?>
test.php liefert mir also die Antwort, welche dann in slave.swf verarbeitet und angezeigt wird.

nun habe ich aber noch keine Punkte zum Server geschickt und weiß auch nicht, wie ich das anstellen soll. Die Punkte liegen in der master.swf (als StandalonePlayer z.b. auf CD).
ich kann allerdings die variable "punkte" nicht in der slave.swf auslesen, um sie weiterzuschicken...ebensowenig kann ich in der master.swf nicht auf die Antwort in slave.swf zugreifen, grrrrrrrrrrrrrrr.

ich kann in der slave.swf nichts inder Art wie System.security.allowInsecureDomain("tja.hmmm.de") packen, weil es keine einzelne Domain gibt, von der aus zugegriffen werden soll. Die master.swf soll ja mal auf ettlichen cds irgendwo auf der welt sein und immer local ausgefürht werden. also nix domain :-(

ich habe alles sowohl lokal als auch mit 2 servern getestet. das egebnis ist immer gleich: geht nicht :-( nur die Antwort aus der test.php erscheint in der slave.swf

weiß jemand, was ich anstellen muß, damit ich meine varialen versenden und auch drauf zugreifen kann?

jeder tip ist willkommen...vielleicht gehts ja irgendwie mit ZINC (www.multidmedia.com)??? aber wenn, wie? noch habe ich keinen blassen schimmer.

Geändert von yayoko (15-03-2007 um 11:51 Uhr)
yayoko ist offline   Mit Zitat antworten
Alt 15-03-2007, 13:41   #2 (permalink)
Alter User
 
Benutzerbild von wommi
 
Registriert seit: Mar 2005
Ort: Ex Exil-Leipziger
Beiträge: 325
Hi - das Prinzip mit master und slave ist ein sehr interessanter Ansatz - hatte auch schon mal probiert lokale Daten zu einem Server zu schicken und hatte es dann spaeter verworfen...

...vielleicht werd ich's ja nochmal probieren mit Hilfe deines Ansatzes

Zu deinem Problem

Vielleicht koenntest du URL-variablen beim Aufruf der slave SWF nutzen - weiss bloss nicht ob das wegen diverser securitysettings (firewall) funktioniert & moeglich ist:

loadMovieNum("http://www.meinHighscoreServer.de/slave.swf?punkte=114509",1);

Wuerde mich freuen zu hoeren ob's klappt...
Ciao Wommi
wommi ist offline   Mit Zitat antworten
Alt 15-03-2007, 14:25   #3 (permalink)
Neuer User
 
Registriert seit: Aug 2006
Beiträge: 10
bingo :-)

genau daran habe ich die letzten stunden auch gesessen und siehe da: so gehts.

ha, wäre ja auch gelacht gewesen, wenn es gar keine möglichkeit gäbe. übrigens alles ohne System.security.allowDomain() in der Slave... oder einer crossdomain.xml auf dem entfernten server...
allerdings gibt es direkt mal ein neues rätsel :-)

und zwar betrifft das die slave.swf.
der aufruft funktioniert (liefert aber ja keine antwort):
Code:
vars.send("http://www.meinHighscoreServer.de/test.php", "blank_", "POST");
der liefert gar nix, weiß nichtmal, ob die daten bei php ankommen. (dazu schreibe ich mir jetzt eine zeile, was mir bei jedem aufruf von test.php eine mail sendet):
Code:
vars.sendAndLoad("http://www.meinHighscoreServer.de/test.php", antwort, "POST");
der aufruf ging schon vorher, übergibt aber keine parameter ans php-script:
Code:
vars.load("http://www.cigarworld24.de/test.php");
die große frage ist: warum? warum kann ich munter variabeln aus allen möglichen zusammengeladenen .swfs an ein entferntes php-script übergeben (wie sehr gehackt sei jetzt mal egal), kriege aber keine antwort...also das phpScript antwortet nur Flash hört nicht zu.

in der slave.swf muß hier irgendwas dafür sorgen daß das onLoad-Event nicht ausgeführt wird (bei "sendAndLoad", bei "load" gehts ja)...was zum Geier ist Flash eigentlich für eine Zicke? Anständige (oder überhaupt irgendwelche) Fehlermeldungen wären schon ein riesen Applaus wert...

irgendwelche ideen? klar, die vars wieder hintendranklatschen, wie gehabt, aber vielleicht gibts auch zur abwechlung auch mal eine "saubere" lösung...achso: kann mir jemand vielleicht erklären, wozu dieser "security"-kram gut sein soll?

Geändert von yayoko (15-03-2007 um 14:38 Uhr)
yayoko ist offline   Mit Zitat antworten
Alt 15-03-2007, 15:00   #4 (permalink)
Neuer User
 
Registriert seit: Aug 2006
Beiträge: 10
nachtrag: ok, das problem mit sendAndLoad hat sich erledigt. es war mein fehler. ich hatte das falsche LoadVars-Objekt mit dem onLoad-Event verknüpft. die antwort vom server kommt also an. :-)

hier nochmal alles komplett, so wie's funktioniert:

1. master.swf
Code:
punkte = 100;
loadMovieNum("http://www.meinHighscoreServer.de/slave.swf?getvar="+punkte,1);
2. slave.swf
Code:
vars = new LoadVars();
vars.sende = getvar; // getvar wird von master.swf per GET übergeben
recive = new LoadVars();
recive.onLoad = function(ok) {
	if (ok)
	{
		_root.txt.text = this.test;
	}
	else
	{
		_root.txt.text = "Fehler";
	}
};

vars.sendAndLoad("http://www.meinHighscoreServer.de/test.php", recive, "GET");

_root.txt.text = "lade...";
PHP-Script:
Code:
if (isset($_GET['sende']))
	echo("test=GET: ".$_GET['sende']);
else
{
	if (isset($_POST['sende']))
		echo ("test=POST: ".$_POST['sende']);
	else
		echo("test=keine Vars.");
	
}
die master.swf startest du entweder lokal oder von irgendeinem server aus.
die slave.swf legst du auf den "meinHighsoreServer".
das PHP-Script auch auf den highScoreServer (ich habs im selben verzeichnis)

die serverantwort kommt in der slave.swf an. da sie ja per loadMovie in die master includet wurde, wird sie auch dort angezeigt.

das letzte problem, welches ich nun noch lösen will ist: wie kann ich die antwort (die in der slave.swf ankommt) in der master.swf weiterverarbeiten?
mit _level1.recive.test jedet nicht, klar: security geht vor ;-)

viele grüße...

p.s. sollte es nicht laufen wie gewünscht, check deine firewall...

Geändert von yayoko (15-03-2007 um 15:16 Uhr)
yayoko ist offline   Mit Zitat antworten
Alt 15-03-2007, 15:51   #5 (permalink)
Neuer User
 
Registriert seit: Aug 2006
Beiträge: 10
Partytime

wird langsam ein richtig asozial gefrickeltes teil, tut aber nun brav was ich befehle, great fun!

das letzte problem, die antwort des slave.swf im master.swf verfügbar zu machen, ist jetzt auch gelöst:

schweinkram, aber egal :-)
master.swf:

1. frame (wie gehabt)
punkte = 100;
loadMovieNum("http://www.meinHighsoreServer.de/slave.swf?getvar="+punkte,1);

2. frame
if (_level1.recive.test != undefined)
{
_level0.output.text = _level1.recive.test;
stop();
}

3. frame
gotoAndPlay(_currentframe-1);

jaja, ist nicht der königsweg. aber, hey :-) soll mal jemand behaupten "geht nicht!". da lach ich jetzt drüber.
(naja, zumindest lokal, online mit 2 servern wills nicht, aber das ist mir jetzt auch pipiegal)

Geändert von yayoko (15-03-2007 um 16:02 Uhr)
yayoko ist offline   Mit Zitat antworten
Alt 15-03-2007, 16:41   #6 (permalink)
angry > always
 
Benutzerbild von ingohill
 
Registriert seit: Jul 2001
Ort: NRW
Beiträge: 1.635
warum arbeitest du nicht mit dem loadVars-modell?

-ingo
__________________

on air: caliban | neaera | heaven shall burn | hatebreed | the agony scene
ingohill ist offline   Mit Zitat antworten
Alt 16-03-2007, 10:30   #7 (permalink)
Neuer User
 
Registriert seit: Aug 2006
Beiträge: 10
wie jetzt?

slave.swf:
Zitat:
vars = new LoadVars();
recive = new LoadVars();
von master.swf geht's ja nicht direkt. das war ja genau das problem. oder was meinst du jetzt?
yayoko ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 00:29 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele