login  Naam:   Wachtwoord: 
Registreer je!
 Tutorials

Tutorials > Flash


Gegevens:
Geschreven door:
vinTage
Moeilijkheidsgraad:
Normaal
Hits:
14667
Punten:
Aantal punten:
 (4.5)
Aantal stemmen:
4
Stem:
Niet ingelogd
Nota's:
 Lees de nota's (11)
 

Tutorial:

Flash in samenwerking met PHP & MySQL

Flash en php, het verzenden en ontvangen van gegevens.

Flash kan je prima gebruiken ism met php (of andere scripttaal zoals asp, omdat ik niet thuis ben met asp gebruik ik php, de basis blijft hetzelfde)

Waarom zou je flash willen laten samenwerken met php ?

Voorbeeldje
Stel we hebben een formulier in flash met een aantal input tekstvelden, een voor de naam, een voor een email adres, etc etc.
De naam willen we opslaan in een database, aangezien flash niet met mySql overweg kan, moeten we dit dus via php realiseren.
We willen niet dat er dubbele namen voorkomen in de database, dus laten we php controleren of de naam al in gebruik is, mocht dit wel het geval zijn, dan stuurt onze php file een bericht naar onze flash en via flash word de gebruiker dan verteld dat hij een andere naam moet kiezen.

In deze tutorial gaan we dus een heel simpel registreer formuliertje maken, met wat fantasie kan je de "leerstof" zelf ook wel aanpassen zodat je het ook voor andere doeleinden kan gebruiken zoals het plaatsen van de highscores in een spelletje, of de integriteit checken van eoa email adres, of....


Het flash formulier


Om te beginnen hebben we natuurlijk een formuliertje nodig om onszelf te registreren, met daarin de inputvelden, maak dus een input veld groot genoeg om er de naam in te kunnen vullen, en geef het de instanceNaam "naam".
Dan moeten we ook nog een tekstveld hebben wat onze "meldingen" toont die php routeneert, dus maak een dynamisch tekstveld aan met de instanceNaam "info".
Nu hebben we nog een verzend knop nodig (met de instanceNaam "knop"), en dan positioneren we de tekstvakken en de button zo dat het er overzichtelijk uitziet.

Nu we dus een deftig design hebben, moeten we nog een heel klein beetje ActionScript plaatsen, dit AS plaatsen we in een keyFrame.
Open dus het AS panel (f9) en plaats de volgende AS

knop.onRelease = function() {
        
        //deze loadVars ontvanged de door php gerouteneerde variables
        ontvang = new LoadVars();
        
        //deze loadVars verzend, de door flash aangemaakt variables
        zend = new LoadVars();
        
        //waardes en variablen toekennen aan de loadVasr "zend"
        zend.naam = naam.text; //zend.naam is de var en naam is de variable inhoud
        //zend.email = email.text; //zend.email is de var en email is de variable inhoud
        
        /*het command voor het verzenden en ontvangen "sendAndLoad()", maakt gebruik van 3 parameters
        1: url (pad/naam van de php file
        2: de loadVars waar alle data zich in verzameld die gerouteneerd word door php(loadVars "ontvang")
        3: en een GET of POST methode.
        De GET/POST parameter is optioneel, default is post
        */
        zend.sendAndLoad("flashPHP.php", ontvang, "POST");
        
        //zodra loadVars "ontvang" zijn data ontvangt, de gegevens verwerken in flash
        ontvang.onLoad = function(success) {
                if (success) {
                        //php echoed "&flashWaarde=hier staat de variable inhoud van "waarde"
                        info.text = ontvang.flashWaarde;
                } else {
                        info.text = "Er is een fout opgetreden, probeer later nog eens";
                }
        };
};

In bovenstaande voorbeeldje "stuur" ik maar één variable vanuit flash naar het php bestand, dit kunnen er natuurlijk veel meer zijn.
Door middel van: zend.naam = naam.text; wordt de inhoud van het textveldje "naam" onder de variablenaam "naam" verzonden.
Wil je meerdere variabelen verzenden, dan doe je dat gewoon door zend.email=email.text; zend.website=website.text; etc

Die gegevens kan je in php opvragen dmv $_POST['naam'], $_POST['email'], $_POST['website'] etc.

De loadVars "ontvang" word dus gevuld door hetgeen wat php echoed, je kan natuurlijk meerdere variabelen laten opsturen.
We willen bijvoorbeeld dat php 3 variables opstuurt, bijvoorbeeld

<?php
echo "&waarde1=een";
echo "&waarde2=twee";
echo "&waarde3=drie";
?>

Dan kan je die waardes in flash opvragen dmv

trace(ontvang.waarde1); //output een
trace(ontvang.waarde2); //output twee
trace(ontvang.waarde3); //output drie


php en database structuur



Ik ga ervanuit dat jullie zelf wel weten hoe je een database connectie maakt en hoe je dan gegevens post in de db, maar voor de absolute beginner leg ik het nog even simpeltjes uit.
We hebben dus een database nodig met een veld voor de naam, deze zou er dus zo uitzien:


-- onze tabel noemen we `flashtabel`
-- rage deze code eventueel in phpMyadmin

CREATE TABLE `flashtabel` (
`naam` varchar(50) NOT NULL default ''
) ENGINE=MyISAM;




Onze flash waardes worden door een php file opgeslagen, die php zou er zo uit kunnen zien:

<?php
//connectie
mysql_connect ("host""user""wachtwoord");   
mysql_select_db("flashtabel")or die ("&flashWaarde=".mysql_error()); 


if(
$_SERVER['REQUEST_METHOD'] == "POST")

  {    
    
//controle of de naam al in de database zit
     
$check_naam mysql_query("SELECT naam FROM flashtabel 
                                WHERE naam = '"
.mysql_real_escape_string($_POST['naam'])."'"
                                         or die (
"&flashWaarde=".mysql_error());
                                         
    
$aantal_rijen=mysql_num_rows($check_naam);
    
     if(
$aantal_rijen 0)
        {
          
//Ja, de naam zit al in de database
             //boodschap voor flash
             
echo "&flashWaarde=Deze naam is al in gebruik, gebruik een andere naam svp.";
        }
        else
        {
           
//Nee, de naam zit nog niet in de database
              //insert in de db
           
mysql_query("INSERT INTO flashtabel (naam) 
                           VALUES ('"
.mysql_real_escape_string($_POST['naam'])."')"
                                or die (
"&flashWaarde=".mysql_error());
                                
           
//boodschap voor flash
              
echo"&flashWaarde=Je hebt daarnet jezelf geregistreerd onder de naam ".$_POST['naam'];
        }
  }
  else
  {
     
//bericht voor mensen die deze file bekijken via hun browser
      
echo "deze pagina is alleen nuttig ism met bijbehorende swf";
  } 
?>

Ik denk dat ik de codes wel voldoende heb becommentariseerd (lol, wat een woordlol)
Dit is een flash tutorial dus verder ga ik niet op php en MySql in.


security (bron: adobe/macromedia)


For Flash Player 8:

  • Data loading is not allowed if the calling SWF file is in the local-with-file-system sandbox and the target resource is from a network sandbox.
  • Data loading is also not allowed if the calling SWF file is from a network sandbox and the target resource is local.

For Flash Player 7 and later:

  • Websites can permit cross-domain access to a resource via a cross-domain policy file.
  • In SWF files of any version running in Flash Player 7 and later, url must be in exactly the same domain. For example, a SWF file at www.someDomain.com can load data only from sources that are also at www.someDomain.com.

In SWF files that are running in a version of the player earlier than Flash Player 7, url must be in the same superdomain as the SWF file that is issuing this call. A superdomain is derived by removing the left-most component of a file's URL. For example, a SWF file at www.someDomain.com can load data from sources at store.someDomain.com because both files are in the same superdomain named someDomain.com.

Wat er hierboven ongeveer word uitgelegt is dat je vanaf player7 de swf en de php in hetzelfde domein moet hebben, er is wel een manier om ook met verschillende domeinen, dit is te realiseren via een "cross-domain policy file", dit is een xml bestand wat op de andere host moet worden geplaatst, in dat xml bestand word het ip of domeinnaam gezet van de vragende server, dit xml bestand ziet er ongeveer zo uit:

<?xml version="1.0"?>  
<!-- http://www.foo.com/crossdomain.xml -->  
<cross-domain-policy>    
 <allow-access-from domain="www.friendOfFoo.com" />    
 <allow-access-from domain="*.foo.com" />    
 <allow-access-from domain="105.216.0.40" />  
</cross-domain-policy>  

Tot zover deze tutorial, hopelijk heb je nu weer een reden meer om toch iets vaker flash te gebruiken wink

Natuurlijk kan een werkend voorbeeldje niet ontbreken, SEE IT.
Mocht je toch ergens problemen hebben, download dan hier de door mij gebruikte bestanden.


Mocht deze tutorial nog niet helemaal voldoen aan je verwachting, bezoek dan mijn website voor een eventuele geupdate tutorial. mvg vinTage




« Vorige tutorial : Shape Tweening Volgende tutorial : ActionScript - Basis »

© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.03s