Thursday, July 29th 2010, 1:21pm UTC+2

You are not logged in.

  • Login
  • Register

undefined

Super Moderator

Posts: 4,248

Location: Germany

1

Wednesday, May 21st 2003, 3:41pm

Flash Variablen mittels PHP in einer Textdatei verwalten!

Flash Variablen mittels PHP in einer Textdatei verwalten!


Wie den meisten ja bekannt ist kann Flash keine Variablen bis zum nächsten Seitenaufruf speichern und benötigt daher eine Serverseitige Scriptsprache wie Perl oder PHP. Um seine Daten Beispielsweise in einer Textdatei zu Speichern. In meinem Tutorial werden wir jetzt einmal verschieden Informationen z.B. Kordination und Farbangaben in einer Textdatei Speichern. Damit wir nicht immer alle Daten beim Ändern angeben müssen werde wir das PHP Script (wir verwenden die PHP Schnittstelle) so gestalten das wir bei jedem Speicherbedarf die Daten zur erst in ein Array lesen dieses dann mit den vorhandenen Textvariablen vergleichen und gegebenen falls Ändern.

In Unserem Beispiel verwenden wir die Variablen daten=1 und var1 bis var6.
Wobei die Variable ?daten? nur zur reinen Überprüfung der Schnittstelle steht. Dies dient zur besseren Sicherheit damit das PHP Script bei einem unbeabsichtigten Aufruf keine Einträge vornimmt. Der Vorteil liegt zusätzlich darin das man auch durch die Variable ?daten? mehrere Textdateien oder Zeilen ansprechen kann oder auch einen andere Funktion anstößt je nach dem was man möchte!

Aus Faulheit verwende ich in der Flashdatei einmal UI Komponenten. Auch wenn ich ehrlich gesagt ein Feind dieser Komponenten bin weil sie Sinnlos fla Dateien zumüllen und stellenweise sehr Ressourcenfressend geschrieben sind nehmen wir sie um zwei Auswahlmenüs (Combo Boxen) mit den variablen und ihren Daten zu füttern.

Als nächstes schreiben wir zwei Handler die unsere input Felder (_root.varsinfo und _root.farbeninfo) unterhalb der Combo Boxen mit den selektierten Daten füttern.

ActionScript-Quelltext

1
2
3
4
5
6
7
8
9
10
// Handler für die Combo Boxen
function setvars() {
    _root.varsetinfo = (MC_Vars.getSelectedItem().label);
}
// Handler
function setcolor() {
    _root.farbeninfo = (MC_Farben.getSelectedItem().label);
}
MC_Farben.setChangeHandler("setcolor");
MC_Vars.setChangeHandler("setvars");

Es ist darauf zu achten das ein UI Komponenten-Handler sich auf der gleichen Ebene befindet wie die Komponente an sich selbst.


Die Felder varsinfo und farbeninfo verwenden wir für unseren Send Befehl in dem wir die Textfelder auf input eingestellt haben. Mit diesem Trick umgehen wir jetzt einmal das verarbeiten der Combo Boxen weil es in diesem Tutorial ja mehr um die Schnittstelle geht und nicht um das verwenden von UI Komponenten.

Nun Schreiben wir uns eine Funktion die den Send Befehl oder unsere Daten an das PHP Script weiterleitet!

ActionScript-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Daten Schreiben Befehl
function sendeDaten(meineVarsmeineDaten) {
    System.useCodepages true;
    if (meineDaten.indexOf("#"0) != 1) {
        myFile meineDaten.substr(17);
    } else {
        myFile meineDaten;
    }
    if ((meineVars >= 0) or (meineDaten == undefined)) {
        sendeVars "?daten=1&var" add meineVars add "=" add myFile;
        ScriptURL "http://www..../vars/functions.php";
        loadVariables(ScriptURL add sendeVarsthis"POST");
        this.onData = function() {
            _root.message this.message;
        };
    } else {
        _root.message "keine Eingabe!";
    }
}


Wie immer Bitte daran Denken das eine URL angegeben werden muß da sonst die Daten nicht die CGI Schnittstelle des Servers passieren.
Der Aufruf gestaltet sich relativ einfach in dem wir mit on(release) unser Daten vom Button bt_aendern übergeben!

ActionScript-Quelltext

1
2
3
on (release) {
    _root.sendeDaten(_root.MC_Vars.getSelectedItem().data_root.MC_Farben.getSelectedItem().data);
}


Mit dem refresh Button setzten wir bei einem on(release) Befehl unsere Variablen wieder auf null.

Die in unserem FlashScript erzeugten Daten senden wir nun an die PHP Datei und nehmen die Variablen mit dem Superglobal $_GET['daten'] entgegen damit ein Fremd aufruf des Scriptes unterbunden wird und keine ungewollten Einträge entstehen. Daher auch im Send Befehl von Flash die variable daten=1 um das aktivieren der if Abfrage zu bewirken.
Ist der wert auf 1 also True rufen wir zuerst unser Abfrage Script auf damit wir die Daten auch vergleichen können.

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// Funktion für das Lesen der Textdatei
function lesedatei() {
 // Wenn Datei nicht Vorhanden ist dann false (0) zurückgeben!
 if(file_exists("vars.txt")) {
  // Öffne Datei nur zum Lesen mit der r Option
  $fp fopen("vars.txt""r");
  // Trenne die Stringverkettung mit explode und gebe das Neue 
  // Array ($vars) Weiter in eine foreach Schleife!
  $vars explode("&"fgets($fp));
  // Erstelle Neues Daten Array
  $result = array();
  // Durchlaufe neues Array ($vars) und Trenne Variablene Definition
  // von den Werten mit explode und Schreibe sie in Array ($result)
  foreach ($vars as $x) {
     array_push($resultexplode("="$x));
  }
  // Schließe Verbindung
  fclose($fp);
  // Gebe Ergebnis zurück an den Funktionaufruf!
 return $result;
 }
}
?>


Wenn die Datei existiert und Daten Vorhanden sind wird ein Array zurück gegeben ist dies nicht der Fall kommt der Wert null zurück.
Daher auch in unserem zweiten Script zuerst einmal nachsehen ob etwas zum vergleichen vorhanden ist sonst schreiben wir einfach eine Neue Datei!

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
// Nehme Eintrag Aufruf von Flash entgegen!
if ($_GET['daten'] == 1) {
 // Rufe die Funktion "lesedatei" auf!
 $lesen lesedatei();
 // Überprüfe ob ein Ergebnis zurück gegeben wurde!
 // Wenn ja dann ein neues Array für das vergleichen erstellen.
 if (count($lesen) != 0) {
   $array = array();
   // Durchlaufe Array und vergleiche die Informationen mit den
   // Daten aus dem Supergloablen Raum $_GET übergebenen Informationen!
   for ($i 0;$i<count($lesen);$i++) {
      // Vergleiche jetzt die Daten mit einem Trinitäts Operator und Schreibe die informationen in Array "array"!
      array_push($array$lesen[$i][0]. "=" $s = (isset($_GET[$lesen[$i][0]]) ? $_GET[$lesen[$i][0]] : $lesen[$i][1]));
   }
  // Nehme das neu gewonnen Array engegen und Formatiere mit implode neu zu "editeintrag"!
  $editeintrag implode("&"$array);
 } else {
  // Hier werden die Daten Konventionel zu einem String formatiert wenn es nicht zu Ändern gibt
  // oder die Textdatei noch nicht vorhanden ist!
  $editeintrag "daten=1&var1=" .$_GET['var1']. "&var1=
" .$_GET['var1']. "&var2=" .$_GET['var2']. "&var3=" .$_GET['var3']. "&var4=" .$_GET['var4']. "&var5=
" .$_GET['var5']. "&var6=" $_GET['var6'];
 }
  // Öffnen mit fopen die Datei erneut und Schreibe überschreibe oder Schreibe Neu!
  $datei fopen("vars.txt","w");
    // Eintragen
    fputs($datei$editeintrag);
  // Verbindung wieder Schließen!
 fclose($datei);
}
?>


Ich hoffe das die Erklärung innerhalb des Scriptes im großen und ganzen eindeutig sind.
Im Support Bereich könnt ihr gerne weitere Fragen zu diesem Tutorial stellen.

mfg Mingmaster
undefined has attached the following file:
  • Savevars.zip (102.17 kB - 203 times downloaded - Last download: May 31st 2010, 4:55pm)
Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
PHP Katepart - Speichenrechner - .htpasswd - RPM XDG Tool - Kcmnvview - QTidy
  • Go to the top of the page

undefined

Super Moderator

Posts: 4,248

Location: Germany

2

Sunday, May 25th 2003, 11:16am

Script Update (SaveVarsTutorial)

In diesem Update wird ein Beispiel aufgeführt wie man einen Variablenwert umkehren kann. Aus 1/true wird 0/false oder Umgekehrt je nach dem wie man es möchte! Das ganze unter Verwendung einer UI-Combobox. Zusätzlich ist eine Datenabfrage jetzt mit vorhanden! :)



mfg Mingmaster
undefined has attached the following file:
  • SaveVarsTut.zip (105.45 kB - 119 times downloaded - Last download: Mar 2nd 2010, 8:16am)
Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
PHP Katepart - Speichenrechner - .htpasswd - RPM XDG Tool - Kcmnvview - QTidy
  • Go to the top of the page