Databashantering‎ > ‎php‎ > ‎

skicka data från flash till php med amfphp

Amfphp är ett ramverk skrivet i php som används för att enkelt kunna skicka data mellan flash och php.
Detta gör man genom att definiera "services" som man placerar i en katalog.
Amfphp är väldigt enkelt att "installera":
  1. Gå till http://amfphp.org och ladda hem den senaste versionen
  2. Packa upp i en webkatalog.
  3. Placera dina "services" i katalogen med namnet "services":
  4. Testa din service genom att surfa in på http://dinadress/amfphp/browser
För att demonstrera hur enkelt det är att skriva en helt egen service så följer här ett exempel på en med tre metoder som går kalla på individuellt:

NtiEc.php

<?php
class NtiEc
{
    public function 
hej($sMessage)
    {
        return 
"Du sa: " $sMessage;
    }
   
    public function 
addera($tal1$tal2)
    {
        return 
$tal1 $tal2;
    }
   
    public function 
slumpaCitat()
    {
        
$citat = array("I do not fear computers. I fear the lack of them. ",
                       
"Computer science is no more about computers than astronomy is about telescopes.",
                       
"Never trust a computer you can't throw out a window.",
                       
"Time is an illusion. Lunchtime doubly so.");
       
        
$max count($citat) - 1;
       
        
$c $citat[rand(0,$max)];
       
        return 
$c;
    }
}
?>

Nu kommer vi till att få in det hela i flash:

amfPhp_exempel.fla

// Nödvändiga bibliotek för att skicka data via AMFPHP
import flash.net.NetConnection;
import flash.net.Responder;

var gateway:String = "http://localhost/flashdb/amfphp/gateway.php";
var connection:NetConnection;
var responder:Responder;

berakna_mc.buttonMode = true;

// Lyssnare för knappen
berakna_mc.addEventListener(MouseEvent.CLICK, beraknaSumma);

// Hanterar datan som skickas till amfphp
responder = new Responder(onResult, onFault);
connection = new NetConnection;
// gateway.php url
connection.connect(gateway);

// Vid klick på summera-knappen
function beraknaSumma(e:MouseEvent):void {
    // Get the data from the input field
    var tal1 = tal1_txt.text;
    var tal2 = tal2_txt.text;
    // Kallar på funktionen addera i NtiEc.php
    connection.call("NtiEc.addera", responder, tal1, tal2);
}

// Tar emot resultatet om sändningen lyckades
function onResult(result:Object):void {
    summa_txt.text = String(result);
}

// Hanterar fel
function onFault(fault:Object):void {
    summa_txt.text = String(fault.description);
}

Som du ser är det mer att skriva i förhållande till det andra exemplet (skicka data från flash till php) men strukturen blir betydligt bättre och det är enkelt att sätta upp nya services.
Hela exemplet går ladda ner här nedanför (du måste dock ladda hem amfphp).
ċ
Olof Olsson,
19 jan. 2009 13:36
Comments