(single) REDIGERET 9 January 2011 • by admin

Load til og fra php

Følgende eksempel udgøres af en php-fill og en actionscript-fil, og viser en tovejs kommunikation, hvor begge filer læser og skriver variabler til hinanden.

PHP-filen

Det medsendte navn læses, og benyttes i forbindelse med en dato til en string output.
Bemærk at php-filen alene, i linket nedenfor, ikke viser noget navn i den sætning den genererer, fordi navnet ikke bliver sendt via dette link, og derfor ikke bliver læst:
http://curlingthebrackets.com/flash/php/sendAndLoad.php.

<?php
	$name = $_POST["navn"];
	$time = date("F jS, Y"); 
	echo $name .", datoen er ". $time;
?>

FLASH-filen

http://curlingthebrackets.com/flash/php/sendAndLoad.html

brugerfladen

  • Et tekstfelt med egenskaben ‘input’, så bruger kan skrive til php: send_txt.
  • Et tekstfelt med egenskaben ‘dynamic’, så bruger kan læse fra php: vis_txt.
  • En knap så bruger kan sende og modtage: sendBut.

Actionscriptet

Samme objekter som med load php-eksemplet:
URLLoader – loader tekst
URLRequest – kommunikerer med en ekstern fil
Derudover:
URLRequest skal bruge værdier på yderligere 2 properties, for at kunne sende: data og method.
URLVariables – Til overførsel af variabler mellem filer

// Hvis problemer med at teste lokalt af-kommenteres følgende med domænenavn
//Security.allowDomain("curlingthebrackets.com");
 
var phpLoader:URLLoader = new URLLoader();// phploader
var flashVars:URLVariables = new URLVariables();// (ind- og) ud-bakke for flash
 
var phpReq:URLRequest=new URLRequest("http://curlingthebrackets.com/flash/php/sendAndLoad.php"); // php-filen // adressen
phpReq.data=flashVars;// udbakken med i forsendelsen 
phpReq.method=URLRequestMethod.POST;// forsendelsens overførsels-metode 
 
sendBut.addEventListener(MouseEvent.CLICK, sendRequest);
function sendRequest(e:MouseEvent) {
	flashVars.navn = send_txt.text; // output fra flash // php's input 
	phpLoader.load(phpReq);
}
phpLoader.addEventListener(Event.COMPLETE, showRespond);
function showRespond(e:Event) {
	vis_txt.text = e.target.data; // php's output gennem phploaderen

Flere variabler

I nedenstående eksempel sender flash et navn og en score-værdi til php (som man kunne tænke sig blev skrevet ind i en database) – og får tilbage fra php et bestemt navn og en score-værdi (Det kunne være en vinder fra databasen med højeste pointværdi.)
Det viste data i flash-filen er således fra php, mens det sendte ikke er synligt.
link til php:http://curlingthebrackets.com/flash/php/score.php
link til flash:http://curlingthebrackets.com/flash/php/score.html

Variabelpar specificeres fra flash med URLVariables-objektet og de tilknyttede variabelnavne hver især.
Variabelpar fra php outputtes i en string adskilt med “&” (uden mellemrum til højre for “&”).
Variabelpar til flash udtrækkes også med et URLVariables-objekt, og tilknyttede variabelnavne.

PHP-filen

<?php
// $_REQUESTudtrækker alle variabler sendt med GET eller POST
extract($_REQUEST);
/*
 $user og $score  er nu klar til at bruge (fx. i forbindelse  med database transaktioner)
*/
 $user="ib";
 $score = 10000000;
// Output: variabelpar med de nye verdier, og adskilt med "&" 
// Uden mellemrum mellem & og  variabelnavn!
echo "user={$user}&score={$score} ";  
?>

Actionscriptet

Den udkommenterede blok udgør funktionaliteten til de sendte variabler, for at vise den adskilt fra de hentede variabler (af hensyn til overblikket).

var req:URLRequest=new URLRequest("http://curlingthebrackets.com/flash/php/score.php");
/*
var variables:URLVariables = new URLVariables();
 
variables.score = String(Math.floor(Math.random()*10));
variables.user = "Anders And";
 
req.data = variables;
req.method = URLRequestMethod.POST ;
*/
var loader:URLLoader = new URLLoader();
loader.load(req);
 
loader.addEventListener(Event.COMPLETE, RESPONSE);
function RESPONSE(evt:Event):void {
	//trace(loader.data);
	var variables:URLVariables=new URLVariables(loader.data);
	//trace(variables.user +" - "+ variables.score );
	user.text=variables.user;
	score.text=variables.score;
}