メイン サーバ関連【CGI・FCS・XMLSocket etc】 Flash > PHP > PHP > Flash (全てPOSTで送信)で送った変数を表示させたい | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ichigo15 | Åê¹ÆNo.32633 投稿日時: 2007-3-25 19:37 |
新米 居住地: 投稿: 19
使用環境:
Mac 10.4.8 , Flash8 |
Flash > PHP > PHP > Flash (全てPOSTで送信)で送った変数を表示させたい こんばんわ。
質問をさせていただきますのでよろしくお願いいたします。 Flash > PHP > PHP > Flash 全てPOSTで送った変数を表示させたいのですが、 最後のFlashで「undefined」になってしまい、変数が取得できていない 状態です。 どのようにすれば、4)index.html+sample.swfにPHPから送られて来た 変数を読込めるのかご存じの方ご教授お願いします。 ブラウザで実行しています。 流れは以下です。 1)index.html (flashでパブリッシュしたhtml)+sample.swf btn1をクリックし「before = "flash to php";」をindex2.phpにPOSTで送信。 ここでの「strAfter」は「undefined」が表示される。(index3.phpに何も表示されていないので当たり前?) 2)index2.php 1)からPOSTで送信されてきた$_POST[before]は取得出来ている。 SQL接続をし、該当データを元に複数の<form action = "http://?>ボタンを作成し適宜のボタンをクリック。 送信する変数 //SQL接続等のスクリプトは省略 $strAfter = $_POST[before] . $row[sample](SQLから抜き出した変数); <form action = "http://localhost/index3.php" method = "POST"> <input type = "hidden" name = "strAfter" value = "<?php echo $strAfter;?>"> </form> 例)リンゴ:<input type = "hidden" name = "strAfter" value = "flash to php100ringo"> みかん:<input type = "hidden" name = "strAfter" value = "flash to php200mikan"> ※みかんのボタンをクリックしたとする 3)index3.php 2)からPOSTで送られてきた$_POST['strAfter'];は取得できている。 (index2.phpの form actionのURLを「index3.php」にすると「flash to php200mikan」が表示される。) index2.phpでPOSTされた変数を表示後index.htmlにジャンプさせる <?PHP $strAfter = "after=" . $_POST['strAfter']; echo $strAfter; //Flashに取得されたい変数 header("Location: http://localhost/index.html"); //もとのページに戻す exit; ?> 4)index.html+sample.swf index3.phpで表示された$strAfter(変数)を取得ができない。 この時点で「ダイナミックテキストインスタンス名:strAfter」でも「「undefined」」表示。 「flash to php200mikan」が表示されることを望む!! ●sample.fla ○1フレーム目 ・配置 MC、ボタン、テキストフィールド ボタンインスタンス名:btn1 ダイナミックテキスト変数名:strAfter ・アクション fscommand("allowscale", false); System.useCodepage=true; _root.btn1.onRelease = function () { objSendVars = new LoadVars(); objSendVars.before = "flash to php"; // これがphpに送信する変数 objSendVars.send("http://localhost/index.php", "_blank", "POST"); } // _rootにstrAfterという変数のダイナミックテキストを用意したとする var strAfter = null; objLoadVars = new LoadVars(); objLoadVars.onLoad = function() { strAfter = objLoadVars.after; } // PHPから変数を取得 objLoadVars.load("http://localhost/index3.php"); stop(); |
空野大二郎 | Åê¹ÆNo.32638 投稿日時: 2007-3-25 21:36 |
職人 居住地: 愛知 投稿: 389
使用環境:
XP:Home FlashMX IE6.0+FlashPlayer7,0,19 CPU:Pentium4 2.26GHz メモリ:1,024MB |
Re: Flash > PHP > PHP > Flash (全てPOSTで送信)で送った変数を表示させたい 長文失礼。ぱっと読んだ限りでは、ichigo15さんの状況は次のようになっていて、
「index3.php」から「sample.swf」へテキストデータが送信されて いないのが原因のように思えます。 <データの名称と流れ> ・sample.swfの変数:before sample.swf>index2.php ・index2.phpの変数:$strAfter index2.php>index3.php ・index3.phpの変数:$strAfter index3.php>index2.php ichigo15さんが書かれているのを読む限り、「sample.swf」が読み 込まれてすぐ「index3.php」からデータを読み込んでいます。
要するに、「index3.php」は、「index2.php」からデータをPOSTで 送信するときと、「sample.swf」が読み込まれた直後の2回呼び 出されています。 「index2.php」から呼び出されたときは、変数$strAfterを受け 取って結果を返していますが、「sample.swf」からの時は、 LoadVars.load()関数を使って何のデータも送信せずに受信して いるので、返されるデータも空になっているのでしょう。 LoadVars.load()やLoadVars.sendAndLoad()関数を使ってデータを 読み込める条件は、指定したurlからテキストデータが帰ってくる ときだけです。 ichigo15さんがFlashへデータを送信するタイミングは、 「index2.php」からformが送信されたあとになるので、上記関数の 条件に当てはまりません。 php(HTML)からFlashへデータを渡すには、srcの部分に クエリーをつけるか、FlashVars属性を使う方法があげられます。 または、「index3.php」が得た結果($strAfter)を一時的にサーバに保存し、 Flashが任意のタイミングで読み込む方法が考えられます。 利便性を求めるなら「index2.php」が行っているFormの処理を Flashが肩代わりして、「sample.swf>index2.php>sample.swf」 「sample.swf>index3.php>sample.swf」とすれば、sendAndLoad() だけで済むようにも思えます。
|
ichigo15 | Åê¹ÆNo.32639 投稿日時: 2007-3-25 22:44 |
新米 居住地: 投稿: 19
使用環境:
Mac 10.4.8 , Flash8 |
Re: Flash > PHP > PHP > Flash (全てPOSTで送信)で送った変数を表示させたい 空野大二郎 さま
早速のお返事ありがとうございます。 やはりindex3.phpのデータはsample.swfに伝わっていないのですね。。(悲 >利便性を求めるなら「index2.php」が行っているFormの処理を Flashが肩代わりして、 お!これは大きなアドバイスだと思い sample.flaの1フレーム目にボタンを新たに作りテストをしてみました。 が、しかしindex2.phpが開く事無く(当たり前)結果は「undefined」 でした。。 (勘違いしていたら申し訳ないです。。) 新しいボタンスクリプト on(press) { objSendVars = new LoadVars(); objSendVars.before = flashtophp; objLoadVars = new LoadVars(); objLoadVars.onLoad = function(success) { if (success) { trace(objLoadVars.strAfter); strAfter.text = this.strAfter; } }; objSendVars.sendAndLoad("http://localhost/index2.php", objLoadVars, "POST"); } index2.phpはSQLから呼び出したデータが複数あり、 そのデータに対していくつも<form action~>が存在し「value」は様々なので、 index2.phpの表示は不可欠なのです。 ユーザがクリックした<form action?>でPOST受信した変数が欲しいのです。 と、いう理由でindex3.phpにsample.swfで欲しい文字列(例:after=flash to php200mikan) だけを書き出しているのです。 この構造からいくとやはり 「sample.swf > index2.php > index3.php > sample.swf 」 しかないと思っているのです。 この流れでPOSTを最後のsample.swfが受け取れるような方法がありましたら アドバイスをいただけると助かります。 |
ひろゆき | Åê¹ÆNo.32643 投稿日時: 2007-3-25 23:32 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: Flash > PHP > PHP > Flash (全てPOSTで送信)で送った変数を表示させたい 引用:
ichigo15さんは書きました: すでに、空野さんが回答されていると思いますが。 引用: [php(HTML)からFlashへデータを渡すには、srcの部分に index3.php -> index.html -> sample.swf の流れにする必要があるように思います。 例えば、
「location.search」でフォーラム内を検索してみましょう。 #「すべて表示」で、たくさん表示されます。 あるいは、index3.php で、 FlashVars を含んだタグを吐き出させる方が確実な気はしますが。
|
空野大二郎 | Åê¹ÆNo.32644 投稿日時: 2007-3-26 0:21 |
職人 居住地: 愛知 投稿: 389
使用環境:
XP:Home FlashMX IE6.0+FlashPlayer7,0,19 CPU:Pentium4 2.26GHz メモリ:1,024MB |
Re: Flash > PHP > PHP > Flash (全てPOSTで送信)で送った変数を表示させたい これまでで、文字列(例:after=flash to php200mikan)を「index3.php」から
「sample.swf」へ受け渡しできていないことが問題だと分かりました。 なおかつ、「(すべてPOSTで送信)」でとなると、データのやりとりを ユーザーから隠す必要があると言うことですね。 そうなると、ブラウザのソースにデータが表示されるクエリストリングを 使う方法や、FlashVarsは使えないことになります。 結果的に、考えつく限りでは残された方法しかありません。
既に廃案ですが、クエリーをつけるとは、HTML書き出し時に 「sample.swf?after=flash to php200mikan&」のようにして引数を 渡す方法です。 FlashVarsはFlash TechNoteを参照して下さい。 FlashVars を使用して SWF へ変数を渡す 余談ですが、 >利便性を求めるなら「index2.php」が行っているFormの処理を >Flashが肩代わりして、 とは、index2.phpはSQLから呼び出したデータをFlash側で受け取り、 form actionの機能をFlashの機能を使って実行する方法です。 新たにユーザーが選択可能なアプリケーションを作成することになるので 手間はかかります。
|
ichigo15 | Åê¹ÆNo.32646 投稿日時: 2007-3-26 0:45 |
新米 居住地: 投稿: 19
使用環境:
Mac 10.4.8 , Flash8 |
Re: Flash > PHP > PHP > Flash (全てPOSTで送信)で送った変数を表示させたい 空野大二郎 さま
ひろゆき さま 日曜日の遅い時間だというのにアドバイスありがとうございます。 空野大二郎 さまにアドバイスをいただいた 引用:
で解決しました!!ありがとうございます!!! この形であればたくさんのPOSTがあってもswfで受け取ることができますね。 引用:
この方法は、また、時間のあるときに試してみたいと思います。 解決したあとの状態) ※似たような状態で悩んでいる方へ 1)index.html + sample.swf ○1フレーム目 ・配置MC、ボタン、テキストフィールド:変更無し ・アクション fscommand("allowscale", false); System.useCodepage=true; _root.btn1.onRelease = function () { objSendVars = new LoadVars(); objSendVars.before = "flash to php"; // これがphpに送信する変数 objSendVars.send("http://localhost/index2.php", "_blank", "POST"); } ・index.html <param name="FlashVars" value="strAfter=<?PHP echo $_POST[strAfter];?>"> <embed src="index.swf" FlashVars = "strAfter=<?PHP echo $_POST[strAfter];?>" ? を追加 2)index2.php ・送信する変数 <form action = "http://localhost/index.html" method = "POST"> <input type = "hidden" name = "strAfter" value = "<?php echo $strAfter;?>"> </form> 3)index.html + sample.swf ダイナミックテキスト変数:strAfterにindex2.phpよりPOSTで送られて来た変数が受け取れた! 本当にありがとうございました!!! |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |