Flash und PHP: Probleme mit Umlauten und Zeilenumbrüchen

Marius Heil

Erfahrenes Mitglied
Hi,

ich ärger mich jetzt schon den ganzen Tag mit Flash und PHP rum, bin immer noch an meinem Onlinespiel, so langsam geht wirklich alles, aber ich bin grad total entnervt.
Ich schicke per Flash daten an ein PHP Script, welches die Daten an mysql Weitergiebt.
Bei umlauten kommen diese nicht mehr in Flash an, wenn ich sie lade, in MySQL stimmt noch alles, hab mal System.useCodePage = true; eingefügt, aber das hat das komplette Script kaputtgemacht.
Die Zeilenumbrüche hatte ich in dieses Wunderbare Zeichen umgewandelt: ? und in PHP in Zeilenumbrüche konvertiert ;)
Ist aber nicht das wahre, irgendwie bekomm ch schon bei der PHP ausgabe nur noch ? raus, welche dann hinterher alle als Zeichenumbrüche erkannt werden.
Ich muss wohl irgendwo ein Problem mit der Schriftcodierung ahben, jetzt ist die Frage, wo,...


Marius
 
Hallo,

Folgendes mal im Voraus:

Flash ist optimiert für utf8-codierte Inhalte, d.h. die Ausgabe deines PHP-Scriptes, XML-Daten usw. Wenn du die System.codePage auf true setzt, interpretiert Flash mit der Client-Einstellung, das kann ISO-XXXXX sein oder anderes, wichtig aber hierbei ist, jeder Client hat wieder ne andere System-Konfiguration, das alles abzufangen, um eine breite Kompatibilität zu garantieren, ist schlicht unmöglich. Darum rate ich dir vom Gebrauch dieser Eigenschaft dringend ab.
Dein Problem behebst du, indem du die Ausgabe deines PHP-Scripts in utf8 codierst bzw die Daten aus Flash decodierst. Und dafür (tataaaaaa) gibts auch schon vorgefertigte Funktionen. Führ dir mal diesen Link hier zu Gemüte utf8_encode
Dazu gibts auch noch die analoge decode-Funktion usw.

Da sollte eigentlich auch für dich was drin sein ;)

Gruss.
 
Uffz, vielen Dank, du hast mich gerettet^^
Ich war schier am verzweifeln, hab die Zeilenumbrüche mit Flash erstmal durch %0D ersetzt, dann hat sie MySQL richtig gespeichert, das ganze geb ich jetzt in PHP mittels utf8_encode aus, das klappt soweit auch prima, jetzt muss ich nur noch ein paar Kontrollfunktionen einbauen.


Marius

----
Ein Problem besteht alelrdings noch:
Er speichert nun alles korrekt in MySQL, allerdings wenn jemand zb reintippt: &variable=soundso dann nimmt das Flash als Variable, was mach ich da?
 
Zuletzt bearbeitet:
Hallo,

poste nächstesmal lieber mit einer neuen Antwort, weil ichs sonst nicht seh (andere übrigens auch nicht).

Ich nehm mal an, du hats irgendwo einen Input (von wegen reintippen und so ;) ) und wenn da jemand so etwas wie "&variable=blabla" eingibt, dann interpretiert Flash das als Variable bzw wenn du nen GET-String erstellst, den du an die URL des PHP-Scripts anhängst, dann wird das als eigene Variable übermittelt. Da empfehl ich dir den Gebrauch des loadVars-Objekts, bzw die POST -Methode desselbigen. Einfach das Objekt mit Variabeln füttern, z.B.
PHP:
myLoadVars = new LoadVars();
myLoadVars.name = "LUKAS";
//übermitteln
myLoadVars.sendAndLoad("url.php", this, "POST");

In PHP kannst du wie folgt auf die Variabeln zugreifen
PHP:
$name = $_POST["name"];
echo $name; //output ==> LUKAS

gruss
 
Zuletzt bearbeitet:
Hi,
danke, das werd ich dann wohl auch umprogrammieren, es ist so, dass ich zurzeit das Komplette Spiel noch mit GET Anweisungen geregelt hab, das hat die Programmierarbeit etwas erleichtert, da ich so die URLs einfacher manipulieren kann, ich hab noch vor das ganze nach POST umzuändern. Ich muss mir dann nur noch was überlegen, dass man nicht per BOT das ganze manipulieren kann, das wird aber denk ich etwas schwieriger,... außer Bildvalidierung ist mir noch nix eingefallen, da hab ich mir zwar ne ganz gute Methode ausgedacht, aber so ganz das Wahre ist die nicht,....
Danke für das LoadVars Objekt, hab ich glaub ich sogar schonmal benutzt, aber das sollte wirklich ganz gut funktionieren, damit probier ichs mal.
Ich hatte den Beitrag vorher recht knapp nach dem Erstellen editiert, ich dachte, vielleciht hats noch keienr gesehen ;) Aber war auch schon am Überlegen.



Marius
 
Tag,

der Vorschlag mit dem loadVars Objekt hat mri ganz gut gefallen, allerdings macht es mir jetzt Probleme, ich hab folgendes in der Flashdatei:
schick = new LoadVars();
schick.empfaenger = empfaenger.text;
schick.betreff = betreff.text;
schick.nachricht = nachricht.text;
schick.modes = "sende";
schick.sendAndLoad("/functions/flash.php", this, "GET");
nachricht.text = schick;
Wenn ich das Formular nun ausfülle bekomm ich als ausgabe folgendes:
modes=sende&nachricht=agagagagag&betreff=agagag&empfaenger=agagag
Das stimmt auch alles soweit, allerdings erstellt mein PHP Script nun keinen neuen MySQL eintrag, wenn ich allerdings die Ausgabe kopiere und so einfüge:
Dann wird eine neue Zeile erstellt, was mach ich denn falsch?
Es scheint doch alles zu stimmen,....


Marius
 
Zuletzt bearbeitet:
Hallo,

das LoadVars-Objekt übergibt die Variabeln nicht als GET-String hinten an der URL, das könntest du ganz simpel auch mit loadVariables machen, was aus oben genannten Gründen nicht sehr empfehlenswert ist. Im Prinzip funktioniert das ganze genauso, wie oben mit der "POST"-Methode beschrieben, bloss mit GET, also:

PHP:
 schick = new LoadVars();
schick.empfaenger = empfaenger.text;
schick.betreff = betreff.text;
schick.nachricht = nachricht.text;
schick.modes = "sende";
schick.sendAndLoad("/functions/flash.php", this, "GET");
nachricht.text = schick;

In PHP die Variabeln wie folgt auslesen:

PHP:
$empfaenger = $_GET["empfaenger"];
print $empfaenger;

gruss
 
Mh, du hast doch allerdings oben an meinem Flashcode nichts geändert, oder?
Und der witz ist ja, dass es aktzeptiert wird, wenn ichs als GET String an die URL anhänge, ob Flash das nun so macht oder nicht, die Art, wie ich die Variablen abrufe ist ja die selbe, ich empfange die Variablen in PH ja schließlich mit $_GET['empfaenger'],...
Was mach ich denn falsch?


Marius
 
Hallo,

nun, an deinem Code ist zumindest Flash-technisch nix auszusetzen. Ich muss aber zugeben, dass es schon lange her ist, dass ich mit GET und dem LoadVars gearbeitet habe. Probiers mal mit POST und sonst würd ich mal auf einen Fehler im PHP-Script tippen....

gruss

EDIT:

Ist mir grade ne Idee gekommen:

probier mal
PHP:
$_GET["empfaenger"]
statt
PHP:
$_GET['empfaenger']
 
Zuletzt bearbeitet:
Zurück