variable von php nach flash - zum 2.
oops
- php
nocheinmal ein hallo in die runde,
dieses problem hatte ich vor 2 tagen schon einmal geschildert, leider gab es keine antwort drauf - vielleicht lags am wetter.
auch auf die gefahr hin, dass es jetzt heißt: "doppelposting, lies die faq" oder "wenn du keine antwort kriegst, ist das auch eine antwort", versuche ich mein glück noch einmal:
problem:
eine variable wird von einer php-datei zu einer 2. übergeben:
<a href="seiten/flash-detect.php?exp=$datei1">datei1</a>
nun möchte ich diese variable auch in die flashdatei in der 2. php-datei übernehmen.
<?php $von_url = $_GET["exp"]; if($requester == "flash")
echo "&von_url=../seiten/$von_url.php"; ?>
das funktioniert leider nicht.
schreibe ich jedoch die 2. datei hinein:
echo "&von_url=../seiten/datei1.php";
klappts.
wie schon letztens angemerkt, glaube ich, dass der inhalt der variable $von_url noch nicht zur verfügung steht, wenn die flash-datei eingebunden wird. in dieser taucht dann eben statt &von_url=../seiten/datei1.php nur
&von_url=../seiten/$von_url.php auf.
man müßte also irgendwie sicherstellen, dass die variable schon umgesetzt wurde bevor sie an die flash-datei weitergesendet wird.
hat da jemand vielleicht die zündende idee? vielen dank
oops
Hi,
bei echo wird der Inhalt von Variablen nicht interpoliert, d.h. $von_url nicht durch den enthaltenen Wert ersetzt.
Verwende print, dann funktionierts.
MfG
Danny
bei echo wird der Inhalt von Variablen nicht interpoliert, d.h. $von_url nicht durch den enthaltenen Wert ersetzt.
Verwende print, dann funktionierts.
leider auch nicht.
teste ich das ganze mit trace bekomme ich ../seiten/$vonurl.php zu sehen (hab den unterstrich rausgelassen), d.h., die variable kommt in flash an (wird hier ja nicht umgewandelt, da flashmx selbst nicht übers netzwerk läuft). dafür bekomme ich "Internal Server Error" und im error.log steht dann "Premature end of script headers: c:/apache/php/php.exe"
gibts vielleicht noch eine andere variante?
???
Wie wird denn die Flash-Datei überhaupt eingebunden, bzw. aufgerufen?
Poste doch bitte etwas mehr Code, bzw. den aktuellen Stand, da ich im Moment nur Bahnhof verstehe.
???
Wie wird denn die Flash-Datei überhaupt eingebunden, bzw. aufgerufen?
Poste doch bitte etwas mehr Code, bzw. den aktuellen Stand, da ich im Moment nur Bahnhof verstehe.
ok, wie du willst ;-)
von datei.php wird eine flash-detect.php aufgerufen, die dann auf datei1.php bis datei20.php verlinken soll.
diese links sind auf datei.php schon eingebunden mit
<a href="flash-detect.php?exp=$datei1>.
in flash-detect.php steht dann
<?php
$vonurl = $_GET["exp"];
if($requester == "flash") print "&vonurl=$vonurl&";
?>
hier ist jetzt eine flash-datei eingebunden, die diese variable übernehmen soll und auch wieder ausspucken, nachdem festgestellt wurde, dass mindestens der flash-player der version 6 vorhanden ist. dazu steht in der flash
frame 1:
stop();
requester = "flash";
var loader = new LoadVars()
loader.onLoad=function(success)
{
if(success)
{
_root.vonurl=this.vonurl;
_root.play();
}
}
loader.load("../seiten/flash-detect.php");
und frame 6
} else if (version >= 6) {
getURL("../seiten/"+_root.vonurl);
stop();
das alles klappt prima (dank nky aus dem flashforum), lasse ich die variable nicht von datei.php auf flash-detect.php übergeben sonder schreibe in die flash-detect.php direkt
if($requester == "flash") print "&vonurl=datei1&";
nur eben die variable wird nicht umgesetzt. wie ich schon sagte, glaube ich, dass die variable noch nicht zur verfügung steht, wenn die flashdatei darauf zugreift.
ist's jetzt klarer?
Bist Du sicher, das $vonurl gefüllt ist?
nach »» $vonurl = $_GET["exp"];
gibt doch $vonurl einfach mal nur als Text aus, ohne den Flash-Aufruf, damit Du sehen kannst, ob die Var da überhaupt gesetzt ist.
Und versuche statt
"&vonurl=$vonurl&";
mal "&vonurl=".$vonurl."&";
wobei der Parser mit Deiner Variante eigentlich auch klar kommen müßte.
Mir ist nicht klar, warum Du in Flash nochmal auf die Datei flash-detect.php zugreifst. Führt das dann nicht zu einer endlosen Rekursion, bzw. Schleife? Sorry, von Flash habe ich keine Ahnung...
Gruß
Danny
gibt doch $vonurl einfach mal nur als Text aus, ohne den Flash-Aufruf, damit Du sehen kannst, ob die Var da überhaupt gesetzt ist.
schon geschehen, das funktioniert.
Mir ist nicht klar, warum Du in Flash nochmal auf die Datei flash-detect.php zugreifst.
da er aus dieser datei die variable holt. es gibt in der php-datei noch weitere php-anweisungen, die auch auf diese variable zugreifen - problemlos.
Führt das dann nicht zu einer endlosen Rekursion, bzw. Schleife?
es ergibt sich keine schleife, da flash die frames eins nach dem anderen abarbeitet und entweder auf eine datei noflash.php weiterleitet oder eben auf die entsprechende datei1.php - datei20.php. es wird jedenfalls nur einmal auf die flash-detect.php zugegriffen, danach gehts weiter (sollte es jedenfalls).
man müßte halt eine konstruktion basteln, die die variable erst zur verfügung stellt und anschließend die flash-datei einbindet - vielleicht hier eine schleife, nach dem motto: ist variable vorhanden, dann baue flash ein.
Hallo Danny,
ist's jetzt klarer?
Nein.
Wie übergibst Du die Variable? Per GET? Rufst Du den Flashfilm also per
<object>
<param name=movie value="soundso.swf?variable=wert">
</object>
o.ä. auf? Wenn ja muss vor dem ersten zu übergebenden Variablennamen kein "&", sondern ein "?" stehen. PHP wird auf dem Server ausgeführt, der Variablenwert in die Ausgabe geschrieben. Der Flashfilm greift nicht auf die Variable zu, sie wird ihm übergeben. Das geschieht clientseitig. Die Variable ist also in jedem Fall bereits vorhanden, da sie auf der Serverseite bereits in die Ausgabe geschrieben wurde.
Kann allerdings sein, das ich Dich nicht richtig verstanden habe.
Lass doch mal den Flashfilm aussen vor, und guck Dir an, was in der generierten HTML-Seite steht, in der der Flashfilm eingebunden ist.
Gruß Henk
hallo Henk,
ist's jetzt klarer?
Nein.
tut mir leid. da muss ich noch etwas üben ;-)
Wie übergibst Du die Variable? Per GET? Rufst Du den Flashfilm also per
<object>
<param name=movie value="soundso.swf?variable=wert">
</object>o.ä. auf?
nein, die variable wird über loadVars in den film geladen:
stop();
requester = "flash";
var loader = new LoadVars()
loader.onLoad=function(success)
{
if(success)
{
_root.vonurl=this.vonurl;
_root.play();
}
}
loader.load("../seiten/flash-detect.php");
und vorher per
$vonurl = $_GET["exp"];
if($requester == "flash") print "&vonurl=$vonurl&";
in der php-datei zur verfügung gestellt. und in AS dürfte das "&" schon richtig sein. deshalb die umwandlung von $vonurl nach &vonurl.
Die Variable ist also in jedem Fall bereits vorhanden, da sie auf der Serverseite bereits in die Ausgabe geschrieben wurde.
warum kann ich dann nicht drauf zugreifen? das problem entsteht ja nur, wenn ich die variable von datei.php nach flash-detect.php per url übergebe. schreibe ich hingegen print "&vonurl=datei1.php&"; funktioniert das ganze.
nein, die variable wird über loadVars in den film geladen:
aha.
stop();
requester = "flash";
var loader = new LoadVars()
loader.onLoad=function(success)
{
if(success)
{
_root.vonurl=this.vonurl;
_root.play();
}
}
loader.load("../seiten/flash-detect.php");
kombiniere: das war actionscriptcode aus dem Flashfilm
und vorher per
$vonurl = $_GET["exp"];
if($requester == "flash") print "&vonurl=$vonurl&";
kombiniere weiter: das war PHP-Code.
woher hat das PHP-Skript denn die Variable $requester?
Wenn ich es richtig sehe, definierst du die Variable im Flashfilm per Actionscript. Woher soll denn das PHP-Skript die variable kennen?
Vielleicht habe ich es aber wieder nicht ganz kapiert... :-(
Entweder bin ich etwas schwer von Begriff, oder Du teilst Dich etwas umständlich mit, ich weiss es nicht... ;-)
Gruß Henk
woher hat das PHP-Skript denn die Variable $requester?
tja, das hab ich mich auch schon gefragt, hab den code von flashforum:
http://www.flashforum.de/forum/showthread.php?s=e3537aa8edc159b264ef017d5f308289&threadid=101582&highlight=%24requester
dort wird diese methode beschrieben, bin mir aber gar nicht sicher, ob ich das unbedingt brauch, da AS die variable auch so ausliest. die if-anweisung verhindert nur eine darstellung im browser.
Entweder bin ich etwas schwer von Begriff, oder Du teilst Dich etwas umständlich mit, ich weiss es nicht... ;-)
ist ja auch ultrakompliziert ;-)
wie schon gesagt, gehts hier eigentlich nur um die übergabe der variable.
geht nicht: print "&vonurl=$vonurl&";
geht: print "&vonurl=datei1.php&";
aber dafür scheint's irgendwie keine lösung zu geben :-(
hallo,
geht nicht: print "&vonurl=$vonurl&";
geht: print "&vonurl=datei1.php&";
Wenn die Variable $requester im PHP-Skript unbekannt ist, gibt er ja auch nichts aus, da die if-Bedingung nicht erfüllt ist:
if($requester == "flash") print "&vonurl=$vonurl&";
entweder Du sparst Dir die if-Abfrage (wozu ist die überhaupt gut?), oder Du sorgst dafür, das der Flashfilm dem PHP-Skript die Variable $requester übergibt.
Gruß Henk
hallo Henk,
Wenn die Variable $requester im PHP-Skript unbekannt ist, gibt er ja auch nichts aus, da die if-Bedingung nicht erfüllt ist:
if($requester == "flash") print "&vonurl=$vonurl&";
wie schon gesagt, glaube ich nicht, dass die variable notwendig ist, sie verhindert nur die anzeige im browser. füge ich statt $vonurl einen dateinamen ein, funktioniert es ja auch.
das auslesen der variablen &vonurl (mit "&" davor) klappt auch, nur bekommt flash eben nicht den inhalt der variablen $vonurl sondern eben nur $vonurl übermittelt. es funktioniert ja alles prima, nur die dynamische zuweisung der variable aus der vorhergehenden php-datei mittels url-anhang klappt nicht :-(
Wenn $vonurl mit "datei1" gefüllt ist, dann _muß_ es gehen!
Jedenfalls wenn es lt. Deinen Angaben mit dem festen Wert "datei1" funktioniert... Versuche es mal so:
$vonurl = "datei1";
if($requester == "flash") print "&vonurl=$vonurl&";
Funktioniert das wenigstens?
hallo Danny,
$vonurl = "datei1";
if($requester == "flash") print "&vonurl=$vonurl&";Funktioniert das wenigstens?
das geht problemlos.
Moin,
also wenn das Problemlos geht, gibt's offensichtlich ein Problem beim Übertragen der URL-Parameter. Kontrolliere nochmal Angabe und Zugriff auf $vonurl und gebe die Var mit print aus... Außerdem kannst Du die Var zum Testen mal an eine andere PHP-Datei übergeben, und darin wieder ausgeben. Sollte das funktionieren, liegt's an Flash und auf diesem Gebiet kann ich Dir beim besten Willen nicht helfen. Wende Dich an ein Flash-Forum, dort gibt's bestimmt auch PHP-Coder. Jedenfalls gibt's hier im Forum wenige Flash-Freaks. Mehr fällt mir dazu nicht ein, sorry.
MfG
Danny
hallo Danny,
alles schon getestet, mit print ausgeben, an eine andere php-datei übergeben, alles klappt. nur eben in flash wills nicht rein. bin auch schon im flashforum mit nky fleissig am werkeln, mal sehen, obs zu weihnachten wird ;-)
trotzdem danke für die hilfe
Was Du auch mal versuchen solltest:
if($requester == "flash") print '&vonurl='.$vonurl.'&';