AS3: Kommunikation zwischen Actionscript 3 und PHP

Nach JavaScript kommt nun der Beitrag für die Schnittstelle zu PHP. Bitte beachten:

  • PHP ist nicht Html
  • PHP muss auf einem Server ausgeführt werden (Apache, XAMPP, etc. )
  • Pfade beachten!

Nach dem Break geht es weiter!

 

von Actionscript 3 zu PHP

Actionscript 3 Code:

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);			
}

 

Einfache PHP-Datei:

<?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);
?>

 

von PHP zu Actionscript 3

Actionscript 3 Code:

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;  
}

 

Einfache PHP-Datei:

<?php
$ergStr = "test=hallo";
$ergStr .= "&os=".rawurlencode("by AxxG Blog");
$ergStr .= "&datei=".rawurlencode("PHP rockt");

echo $ergStr;
?>

 

Beide Richtungen

Actionscript 3 Code:

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;  
		}
	}
}

 

Einfache PHP-Datei:

<?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;
?>

 

Beispiel

Actionscript 3 + PHP




4 Antworten : “AS3: Kommunikation zwischen Actionscript 3 und PHP”

  1. Alex sagt:

    Hallo,
    Frage: kann ich auch eine AS3 Anwendung nur, und ausschließlich mit PHP „bedienen“?

  2. 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….

  3. Jürgen sagt:

    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

Kommentar verfassen