Nach JavaScript kommt nun der Beitrag für die Schnittstelle zu PHP. Bitte beachten:
Nach dem Break geht es weiter!
import flash.system.Capabilities; import flash.display.Sprite; import flash.net.URLRequest; import flash.net.URLLoader; import flash.net.URLVariables; import flash.net.navigateToURL; import flash.net.URLLoaderDataFormat; import flash.net.URLRequestMethod; var loader:URLLoader; var req:URLRequest; var variables:URLVariables; public function senden() { // Objekte erstelle loader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.VARIABLES; // Pfad zur Php Datei req = new URLRequest("server.php"); // Methode festlegen (GET oder POST) req.method = URLRequestMethod.POST; // Variablen festlegen und belegen variables = new URLVariables(); // Name kann nach dem variables.******* frei festgelegt werden! // Die Funktion escape() transformiert den Inhalt URL-freundlich variables.os = escape(Capabilities.os); variables.playerVersion = escape(Capabilities.version); variables.isDebugger = escape(Capabilities.isDebugger.toString()); variables.visitDate = escape(new Date().toString()); variables.language = escape(Capabilities.language); // Variablen dem Request zuweisen req.data = variables; // Daten senden loader.load(req); }
<?php // Daten in Variablen packen $os = $_POST['os']; $playerVersion = $_POST['playerVersion']; $isDebugger = $_POST['isDebugger']; $visitDate = $_POST['visitDate']; $language = $_POST['language']; // Daten in eine Datei schreiben $dateiname = "meineDaten.txt"; $handle = fopen ($dateiname, "w"); $inhaltData = "$visitDate; $os; $playerVersion; $isDebugger; $language;\n"; fwrite ($handle, $inhaltData); fclose ($handle); ?>
import flash.display.Sprite; import flash.net.URLRequest; import flash.net.URLLoader; import flash.net.navigateToURL; import flash.events.Event; var loader:URLLoader; var req:URLRequest; loader = new URLLoader(); // Eventhandler zum auffangen der Antwort loader.addEventListener(Event.COMPLETE, handleComplete); // Pfad zur Php Datei req = new URLRequest("server.php"); function handleComplete(myEvent:Event):void { var resultVars:URLVariables = new URLVariables(myEvent.target.data); this.a_txt.text = resultVars.datei; this.b_txt.text = resultVars.os; }
<?php $ergStr = "test=hallo"; $ergStr .= "&os=".rawurlencode("by AxxG Blog"); $ergStr .= "&datei=".rawurlencode("PHP rockt"); echo $ergStr; ?>
package { import flash.system.Capabilities; import flash.display.Sprite; import flash.net.URLRequest; import flash.net.URLLoader; import flash.net.URLVariables; import flash.net.navigateToURL; import flash.net.URLLoaderDataFormat; import flash.net.URLRequestMethod; import flash.events.Event; public class skript extends Sprite { private var loader:URLLoader; private var req:URLRequest; private var variables:URLVariables; public function skript() { this.a_txt.text = Capabilities.os; this.b_txt.text = Capabilities.version; this.c_txt.text = Capabilities.isDebugger.toString(); this.d_txt.text = new Date().toString(); this.e_txt.text = Capabilities.language; loader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.VARIABLES; // Eventhandler zum auffangen der Antwort loader.addEventListener(Event.COMPLETE, handleComplete); // Pfad zur Php Datei req = new URLRequest("server.php"); // Methode festlegen (GET oder POST) req.method = URLRequestMethod.POST; // Variablen festlegen und belegen variables = new URLVariables(); // Name kann nach dem variables.******* frei festgelegt werden! // Die Funktion escape() transformiert den Inhalt URL-freundlich! variables.os = escape(Capabilities.os); variables.playerVersion = escape(Capabilities.version); variables.isDebugger = escape(Capabilities.isDebugger.toString()); variables.visitDate = escape(new Date().toString()); variables.language = escape(Capabilities.language); // Variablen dem Request zuweisen req.data = variables; // Daten senden loader.load(req); } private function handleComplete(myEvent:Event):void { var resultVars:URLVariables = new URLVariables(myEvent.target.data); this.a_txt.text = resultVars.datei; this.b_txt.text = resultVars.os; } } }
<?php // Daten in Variablen packen $os = $_POST['os']; $playerVersion = $_POST['playerVersion']; $isDebugger = $_POST['isDebugger']; $visitDate = $_POST['visitDate']; $language = $_POST['language']; // Daten in eine Datei schreiben $dateiname = "meineDaten.txt"; $handle = fopen ($dateiname, "w"); $inhaltData = "$visitDate; $os; $playerVersion; $isDebugger; $language;\n"; fwrite ($handle, $inhaltData); fclose ($handle); $ergStr = "test=hallo"; $ergStr .= "&os=".rawurlencode("by AxxG Blog"); $ergStr .= "&datei=".rawurlencode($dateiname); echo $ergStr; ?>
[download id=“5″ format=“2″]
Hallo,
Frage: kann ich auch eine AS3 Anwendung nur, und ausschließlich mit PHP „bedienen“?
Hallo Alex,
also theoretisch ist ein PHP-Backend mit Logik/Maskensteuerung/etc. machbar, aber die Kommunikation zwischen Flash-Client und PHP-Backend ist komplett unverschlüsselt. Das heißt, dass Jeder die Anwendung ganz leicht manipulieren kann. Dieser Gegenstand ist auch ein Problem vieler Flash-Games….
Servus Alexander,
das scheint mir der einzige Blog zu sein, wo ein PHP Entwickler einen kleinen simplen Testcode sehen kann, ohne gleich ein Mailformular in Flash machen zu müssen!
Nur leider klappt Dein Code bei mir nicht. Seite bleibt weiß???
Und ich habe keine Ahnung vom Flashdebuggen.
Es wäre toll wenn Du mir zeigen könntest wie (PHP)man, nur mal eine Variable mit einem einfachen Text von Flash an PHP übergeben kann.
Danke im voraus, Jürgen
Hallo Jürgen,
tut mir Leid, dass ich erst jetzt antworte, aber das Masterstudium ging diese Woche vor.
Folgende Umstände könnten dazu führen, dass das Beispiel nicht bei dir funktioniert:
– Du hast gar keine oder eine alte Version vom Flashplayer installiert (Beste Lösung—> neusten Chrome Browser installieren, weil da der Flashplayer integriert ist)
– Du hast einen aktiven Flashblocker (Adblock Plus, Flashblock, etc.)
– Die Flash-Datei ist kaputt
– Es fehlen Rechte auf dem Verzeichnis
Wichtige Info: Die Seite mit der Flash-Datei wird immer angezeigt! Egal ob Online, mit PHP oder ohne….
Ich hoffe, dass ich dir weiter helfen konnte:-)
Viele Grüße
Alexander