Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-08-2004, 14:30   #1 (permalink)
Neuer User
 
Benutzerbild von redbolt
 
Registriert seit: Jul 2003
Ort: Stuttgart
Beiträge: 118
Unhappy Problem mit Php

Hallo,

ich hab ein kleines Problem mit PhP.

Ich möchte von einem lokalen Rechner von einer laufenden swf anwendung eine Variable spieler0 an einen Php skript senden, der auf einem fähigen server liegt.
Es soll in meinem Spiel nämlich möglich sein offline zu spielen sich bei der higscoreanzeige ins netzt einzuwählen und den spielstand auf eine online highscoreliste abzulegen. Diese Highscoreliste greift auf eine Textdatei im UTF-8 Format zu in der die Variable spieler0 enthalten ist.

in der lokalen swf anwendung gebe ich die variable folgendermaßen an den Php Script weiter:

Code:
loadVariables("www.test.de/eintragen.php", _root, "POST");
Nun der Php Script welcher die txt Datei aktualisiert.

Code:
<?
$spieler0 = stripslashes($spieler0);
$spieler0 = urlencode($spieler0);
$fq = fopen("spielerscore.txt,"w");
fputs($fp,"spieler0=".$spieler0."&");
fclose($fp);
?>
und schließlich noch die txt Datei spielerscore.txt selbst

Code:
&spieler0=10&
&spieler1=100&
&spieler2=1000&
Hat zB. der Spieler0 in diesem Fall eine höhere Punktzahl als 10 zB. 500 so soll der oben beschriebene Php Script &spieler0=10& mit &spieler0=500& ersetzen.


mit dem beschriebenen script funktioniert es aber nicht.
wo habe ich meinen fehler?
kann mir jemand helfen?
redbolt ist offline   Mit Zitat antworten
Alt 23-08-2004, 14:36   #2 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
Hi,

schreib mal http://www.test.de/eintragen.php. ohne http sucht Flash ein lokales Verzeichnis mit diesem Namen...

btw: ab MX würde ich an deiner Stelle lieber das LoadVars-Objekt benutzen, und die Daten mit sendAndLoad() versenden...

Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 23-08-2004, 14:41   #3 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
den anderen Teil hatte ich übersehen.

Du musst in PHP natürlich erstmal die txt einlesen und parsten um zu schauen, ob der Spieler bereits einen Eintrag hat und ob der neue höher ist als der vorhandene. Das Problem wird nur sein, dass mehrere Leute ggf. den gleichen Spielernamen verwenden.
Momentan ersetzt du die Datei immer wieder. Du musst es als append schreiben.
Oder wie gesagt die gesamte Datei einlesen, nach dem Spielernamen suchen, den Wert ggf. ersetzen und alles wieder neu schreiben.

Wenn du eine (mySQL-)Datenbank verwenden kannst, ist das sichedrlich einfacher.

Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 23-08-2004, 14:43   #4 (permalink)
Neuer User
 
Benutzerbild von redbolt
 
Registriert seit: Jul 2003
Ort: Stuttgart
Beiträge: 118
im original script habe ich http dabei. das ist es aber nicht.

ist es überhaupt möglich von einem rechner daten an ein online php script zu senden. es sit nämlich keine einbettung in html sondern eine reine swf datei bzw. exe.

wie funktioniert das mit dem Loadvars object kann st du das mal für mich abändern?

mein php script ist ok?
redbolt ist offline   Mit Zitat antworten
Alt 23-08-2004, 14:49   #5 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
lokal ist es möglich, einen beliebigen Server anzusprechen. Das ist prinzipiell nicht das Problem.

Was genau funktioniert denn nicht? Kommen die Daten erst gar nicht an?
Ist der Inhalt der txt falsch?

Mit LoadVars ginge es wie folgt:

ActionScript:
  1. loader = new LoadVars();
  2. loader.onLoad = function(ok) {
  3.     if(ok) {
  4.         trace("erfolgreich geladen");
  5.     }
  6. }
  7. // beliebige Daten anhängen
  8.  
  9. loader.name = "Spieler0";
  10. loader.score = 1200;
  11. loader.sendAndLoad("http://www.meinserver.de/eintragen.php",loader,"POST");

im onLoad kannst du Rückgabewerte mit this.varname abfragen. So kannst du dir beispielsweise direkt die neue Highscoreliste übertragen.

Zu deinem PHP-Skript hab ich dir eben schon was geschrieben.
Sonst probier es halt erstmal mit einem lokalen Server aus, indem du die Werte einfach per Getstring übergibst.

Es ist ohnehin immer sinnvoll, das schrittweise zu erstellen. Schreib dein PHP, teste es lokal. Dann lade es von Flash aus. So hast du mehr Kontrolle darüber und kannst auch testen, ob überhaupt alles im PHP-Skript ankommt, was ankommen soll.

Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 23-08-2004, 14:49   #6 (permalink)
Neuer User
 
Benutzerbild von redbolt
 
Registriert seit: Jul 2003
Ort: Stuttgart
Beiträge: 118
die spieleranzahl ist konstant es gibt nur 25 spieler neue spieler können nicht beitreten also ist das ganze statisch.

die abfrage ob der punktestand höher ist mache ich schon in Flash.
der script wird nur bei höherer punktzahl aufgerufen.

ich kenne mich in php nicht gut aus.

könntest du mir einen kleinen bespielscript schreiben?

je nach dem welcher spieler spielt von den 25 wird vor spielende eine variable
_root["spieler"+spieler]
erzeugt zB. für spieler 1 --> Variable: spieler1
ist der punktesatnd größer wird in diese variable der neue punktestand geschrieben und an php übermittelt.
redbolt ist offline   Mit Zitat antworten
Alt 23-08-2004, 14:53   #7 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
ja, das könnte ich machen, halte es aber nicht für sinnvoll, was den Lerneffekt angeht...

Also nur eine kurze Anleitung, was du machen solltest:

1. Lese die txt ein und speichere die Daten zeilenweise in einem Array
Beispiele hierfür solltest du überall im Netz finden.

2. Durchsuche das Array, bis du auf den übergebenen Spielernamen triffst.
Deine Zeile sieht ja immer gleich aus, also etwa: &spieler0=1200&
Du könntest z.B. nach dem "=" splitten (explode) und den vorderen Teil vergleichen.

3. Hast du den Spieler gefunden, ersetze bei diesem Index im Array den Eintrag gegen den neuen Wert.

4. Schreibe die Daten aus dem Array wieder in eine Datei.

Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 23-08-2004, 14:55   #8 (permalink)
Neuer User
 
Benutzerbild von redbolt
 
Registriert seit: Jul 2003
Ort: Stuttgart
Beiträge: 118
es wird nichts in die textdatei geschrieben
redbolt ist offline   Mit Zitat antworten
Alt 23-08-2004, 14:57   #9 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
das sehe ich jetzt erst:
deine Datei-Resource ist falsch:

$fq = fopen("spielerscore.txt,"w");
fputs($fp,"spieler0=".$spieler0."&");
fclose($fp);

Du hast oben fq, danach fp...

Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 23-08-2004, 15:02   #10 (permalink)
Neuer User
 
Benutzerbild von redbolt
 
Registriert seit: Jul 2003
Ort: Stuttgart
Beiträge: 118
das wäre ja alles kein problem wenn ich in eine txt per php schreiben könnte aber genau das geht ja nicht.

HILFE!!

warum macht php nichts

hab es auch schon mit apache server lokal versucht geht auch nicht.
redbolt ist offline   Mit Zitat antworten
Alt 23-08-2004, 15:03   #11 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
und noch was:

$fq = fopen("spielerscore.txt,"w"); // falsch, Anführungszeichen fehlt..

$fq = fopen("spielerscore.txt","w"); // richtig

Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 23-08-2004, 15:04   #12 (permalink)
Neuer User
 
Benutzerbild von redbolt
 
Registriert seit: Jul 2003
Ort: Stuttgart
Beiträge: 118
nein, leider nicht so einfach

das fp fq habe ich schon kurz zuvor behoben geht immer noch nicht
redbolt ist offline   Mit Zitat antworten
Alt 23-08-2004, 15:08   #13 (permalink)
Neuer User
 
Benutzerbild von redbolt
 
Registriert seit: Jul 2003
Ort: Stuttgart
Beiträge: 118
auch " hat noch nicht geholfen
redbolt ist offline   Mit Zitat antworten
Alt 24-08-2004, 10:17   #14 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
bekommst du keine Fehlermeldung, wenn du das PHP direkt im Browser aufrufst? Hast du überhaupt Schreibrechte in dem Verzeichnis?

Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 24-08-2004, 12:06   #15 (permalink)
Neuer User
 
Benutzerbild von redbolt
 
Registriert seit: Jul 2003
Ort: Stuttgart
Beiträge: 118
schreibrechte habe ich.
ich habe mal dden php script als ANSI gespeichert, jetzt erstellt er schonmal eine textdatei

php script

Code:
<?
$eintragung = "spielerscore.txt";
$fp = fopen($eintragung,"w");
fputs($fp,"spieler0=".$spieler0);
fclose($fp);
?>
das ergebnis in der textdatei
Code:
spieler0=
mein code in der swf
die variable spieler0 ligt im _root also _root.spieler0
in einem Movieclip hab ich den code:
Code:
on(release){
			loadVariables("eintrag.php",_root,"POST");
			trace(_root.spieler0);
}
Die Variable spieler0 wird nicht an meinen script übertragen muss ich vielleicht
_root.loadVariables("eintrag.php","","POST"); schreiben?
oder ist loadVariables("eintrag.php",_root,"POST"); in ordnung?
redbolt 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 04:39 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele