Workshops - Freitag, Februar 22, 2008 16:23

Flashcounter mit PHP

Counter sind fester Bestandteil von nahezu allen Internetseiten und geben Auskunft darüber, wie oft eine Internetseite besucht wird. Oft werden sie als stinknormaler Text oder langweilige Grafik dargestellt. Doch wie sieht es auch wenn sie animiert und in Flash sind? Wie gibt man Daten von Flash an PHP und umgekehrt weiter? Im Folgenden werde ich detailliert beschreiben wie man einen Counter selbst programmiert/designt. Was man dazu braucht ist lediglich das Programm Flash von Macromedia ab Version 5 und die Grundlagen sollte man auch beherrschen, da das vorteilhaft wäre um den Counter zum Beispiel zu animieren. Ich werde jedoch mehr auf den Flash-PHP Datenaustausch eingehen und nicht beschreiben wie man einen Counter in PHP programmiert da das bereits auf dieser Seite beschrieben ist.

Nachdem wir mit einer neuen Arbeitsfläche beginnen, erstellen wir ein dynamisches Textfeld. Wir nennen das Textfeld „countertext”.

In das erste Schlüsselbild kommt folgender Code rein:

loadVariables(”counter.php”+new Date().getTime(), this, ”POST”);
this.onData = function() {
    countertext = wert;
};

In der ersten Zeile des Quelltextes werden die Daten aus der counter.php geladen. Das Date-Objekt dient dazu, dass Flash annimmt, dass der Zahlenwert noch nicht im Cache ist. Ohne das Date-Objekt würde sich zwar der Wert in der Textdatei erhöhen aber nicht in Flash-Film angezeigt werden da Flash auf den im Cache gespeicherten Wert zugreifen würde. Nach dem einlesen der Daten findet die Übergabe an das Textfeld „countertext” statt. Dabei sorgt die Ereignissprozedurmethode „Data” dafür, dass sobald sämtliche Daten aus der PHP-Datei übertragen wurden, dies in unserem dynamischen Textfeld angezeigt wird. Die Flash-Datei besitzt nun die Fähigkeit, um Daten aus dem PHP-Dokument zu empfangen. Als nächstes kommt der zweite Teil der Arbeit, die PHP-Datei.

Unser PHP-Script soll in der Lage sein, Daten an unseren Flash-Film zu senden. Dazu betrachten wir folgenden Code der counter.php:

<?php
    $dateiname 
“counter.txt”
    
$datei fopen($dateiname“r”);
    
$zeile fgets($datei100);
    
fclose($datei);
    
parse_str($zeile);
    
$zahl++;
    
$datei fopen($dateiname“w”);
    
Fwrite($datei“zahl=” .$zahl);
    
fclose($datei);
    echo 
“wert=$zahl”;
?>

Nun erläutere ich die Funktionsweise: Als erstes wird der Dateiname der Textdatei in einer Variable definiert und die Textdatei wird eingelesen. Jedes mal wenn eine Seite besucht wird, geschieht das Ganze von vorne und der Wert wird immer um jeweils 1 erhöht. Denn das PHP-Script erwartet lediglich, dass eine Textdatei mit dem Namen counter.txt auf dem Webspace liegt die er einliest, Wert um 1 erhöht und abschließend abspeichert. Dazu dienen die PHP-Anweisungen fopen(), fgets() und fwrite(). Zu welchem Zweck die Textdatei geöffnet wird bestimmt der Parameter “r”. Welche es unter anderem noch gibt werde ich hier aufzählen:

r - öffnet eine Datei zum Lesen
r+ - öffnet eine Datei zum Schreiben
w - öffnet eine Datei zum Schreiben. Wenn die Datei nicht existiert, wird sie angelegt, wenn sie existiert, wird sie überschrieben
w+ - öffnet eine Datei zum Schreiben und Lesen. Wenn die Datei nicht existiert, wird sie angelegt, wenn sie existiert, wird sie überschrieben
a - öffnet eine Datei zum Schreiben. Wenn die Datei nicht existiert, wird sie angelegt, wenn sie existiert, wird sie NICHT überschrieben
a+ - öffnet eine Datei zum Schreiben und Lesen. Wenn die Datei nicht existiert, wird sie angelegt, wenn sie existiert, wird sie NICHT überschrieben

Dabei ist zu beachten, dass jede Datei auch mir fclose() geschlossen werden muss. Eine wichtige Rolle spielt die Zeile, die dem Flash-Film den Wert übergibt: echo “wert=$zahl”;

Im Prinzip gilt immer: FlashVariable=$PHPVariable

Dies gilt für sämtliche Wertübergaben von PHP an Flash.

Das war es auch mit meinem kleinen Tutorial. Ich hoffe es hat euch gefallen und war alles verständlich. Flash-Counter haben den Vorteil, dass Sie zum einen optisch eindrucksvoller sind - wie oben bereits erwähnt - und zum anderen hat es den Vorteil, wenn jemand eine Seite komplett in Flash machen möchte, er den Counter direkt in den Flash Film einbinden kann und nicht irgendwo außerhalb der Seite. ;-)



2 Kommentare
RSS Feed der Kommentare | Kommentieren | Trackback

Johannes
Jul 17, 2008 20:50

Hallo,
alles funktioniert bis auf das Wesentliche, die Anzeige im flash-Film. Ich probiere schon tagelang rum, finde aber kein Lösung. Ich habe den Eindruck, es liegt an der “echo-Zeile” oder daran, dass der Flashfilm nicht richtig vorbereitet ist für die Übernahme (und Anzeige) des durch die php-Datei ermittelten Zahlenwerts (ich habe alles so gemacht wie im Tutorial beschrieben!).
Ich bin mit meinem Latein am Ende ! ! ! - Wer kann mir helfen ? ? ?
Herzliche Grüße

Reen
Aug 16, 2008 15:45

Habe es auch eben genau so probiert und es funktioniert nicht, werde der Sache weiter auf den Grund gehen.

Kommentieren

wichtige Artikel