メイン サーバ関連【CGI・FCS・XMLSocket etc】 CGIとのデータ連係について | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ちーむどらむすこ | Åê¹ÆNo.6937 投稿日時: 2004-5-6 22:13 |
Bak@Fla巨匠 居住地: とうきょう 投稿: 16
使用環境:
Win7,FlashCS4 |
CGIとのデータ連係について ハゲ輝彦です。よろしくです。
特定のアドレスからのアクセスの際に、 フラッシュ内のボタンを非表示にするということを試しています。 現状は、001.swf・002.swfといった番号順に並んでいるフラッシュを、 perlでパラメータを持たせることでHTML表示をしています。 aaa.cgi?number=001のときは001.swfを、 aaa.cgi?number=002のときは002.swfを、画面上に表示しています。 ------------------------------------------------------------ &ReadParse(); # フォーム内容の処理 while(($key,$val) = each(%in)){ 中略 } $number = $in{'number'}; $head = <<"EOM"; Content-type: text/html \n\n <html> <body> フラッシュを表示するタグ </body> </html> EOM &jcode'convert(*head,'sjis'); print $head; ------------------------------------------------------------ といった感じです。 で、考えたのが、フラッシュ内のボタンを、 もう一つパラメータをつけ、そのパラメータをフラッシュ側へ 送ってみようと思い、下記のように追加しました。 ------------------------------------------------------------ #判別用の数値 1で表示 2で非表示 #aaa.cgi?number=001&mode=1という風にしようと思いました $mode = $in{'mode'}; #ここからフラッシュにデータを渡しています。 print "Content-type: text/plain\n\n"; print "modedata=$mode"; $head = <<"EOM"; 中略 EOM &jcode'convert(*head,'sjis'); print $head; ------------------------------------------------------------ という感じです flashの方には、 ------------------------------------------------------------ CGIFile="../../cgi-bin/comics/count.cgi"; loadVariables(CGIFile,this,"POST"); ------------------------------------------------------------ を記述したMC「load_mc」をメインタイムライン上に配置し それに ------------------------------------------------------------ onClipEvent(data){ _parent.dispcount=this.modedata; } ------------------------------------------------------------ とクリップイベントを記述して メインタイムライン上においたダイナミックテキスト「dispcount」 にまずは、modedataの価が取得できるかどうかを試しています。 (森巧尚さんの「ActionScript+CGIプログラミング」のまんまで恐縮ですが…) が、現状として、 modedataがHTML内に表示されてしまう、 フラッシュの方で数値による判別ができていない、 という問題がでてしまいました。 ダイナミックテキスト「dispcount」には、 textplainで送っているはずの数値で無く(それは読み飛ばされて)、 それより下のタグが全て参照されてしまいます。 (なお、flashはバージョン5で製作をしたいのです) 長くなってしまいましたが、回避する方法は有りますでしょうか。 よろしくお願いいたします。 |
森 巧尚 | Åê¹ÆNo.6940 投稿日時: 2004-5-6 23:29 |
モデレータ 居住地: 宝塚 投稿: 650
使用環境:
.5/CS4/Safari3 XP+2000//IE6 |
Re: CGIとのデータ連係について 引用:
現状として、 どういう状況で何が問題なのかがわかりにくいですね。 「modedataがHTML内に表示」とは、modedataが別ウィンドウで表示されるんですか? 「フラッシュの方で数値による判別ができていない」とは、Flashのどこかで数値による判別をさせているのでしょうか? 引用:
感じとしては、CGIのプログラムミスで、 「CGIが正しい値を出力していない」ような気がしますね。 CGIをFlashから呼ばずに、CGI単体だけで実行してみて、必要なデータが出力されていますか? 「それより下のタグが全て参照」ってありますが、まさかhtmlの中身もデータとして一緒に送ってませんか。 modedataにhtmlの中身がくっついていたら、それは正しく動作しないと思いますよ。 そもそも「Flash内のボタン」を押して「CGIへデータを渡して」「CGIからそのデータを受け取って」「フラッシュ内のボタンを非表示にする」ってことをしなくても、 「Flash内のボタン」を押して「フラッシュ内のボタンを非表示にする」ってすればいいだけでは??? それとも「Flash内のボタン」を押したら別ウィンドウが開いて、別のswfが表示されるということでしょうか。それなら必要なアドレスを必要な数用意してジャンプさせればいいと思いますが。(getURLを使っていないからそうではないのでしょうか)
|
ちーむどらむすこ | Åê¹ÆNo.6968 投稿日時: 2004-5-7 10:56 |
Bak@Fla巨匠 居住地: とうきょう 投稿: 16
使用環境:
Win7,FlashCS4 |
Re: CGIとのデータ連係について おお、森博士、現る!!(喜)
ハゲ輝彦です。 説明不足ですいません。 補足説明させていただきます。 [目的] 現在、ムービーを別ウィンドウ表示させていて、 A、B、2つのサイトより見られるように考えています。 その際、Aのサイトからこの別ウィンドウを開いた場合には FLASH内のボタンを表示し、Bのサイトより別ウィンドウを開いた場合には FLASH内のボタンを非表示にしたいと考えています。 現状、その為のテストとして以下の事を行っています。 アドレスは下記のようになっています。 http://www.・・・.co.jp/cgi-bin/test.cgi?number=001&mode=1 cgiファイルを用意 (長くなりますが、記述させていただきます) =================================== #!/usr/local/bin/perl # ライブラリ読み込み require "cgi-lib.pl"; require "jcode.pl"; # フォームデータ読み込み &ReadParse(); # フォーム内容の処理 while(($key,$val) = each(%in)){ &jcode'convert(*val,'euc'); $val =~ s/\n/<br>/g; $val =~ s/</</g; $val =~ s/>/>/g; $val =~ s/,/,/g; $in{$key} = $val; } # 各パラメータの抽出 # $numberはフラッシュのファイル名 # $modeはボタン表示判別用 # 1のとき表示、0のとき非表示 $number = $in{'number'}; $mode = $in{'mode'}; # ここよりフラッシュへ$modeの値を # modedataの名前で送る print "Content-type: text/plain\n\n"; print "modedata=$mode"; # ここよりHTMLを変数に格納 $head = <<"EOM"; Content-type: text/html \n\n <html> <head><title>・・・</title> <meta http-equiv="content-type" content="text/html;charset=Shift_JIS"> </head> <body topmargin=0 leftmargin=0 marginwidth=0 marginheight=0 scrolling="no" frameorder="no" bgcolor="#FFFFFF"> <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" WIDTH=100% HEIGHT=100%> <PARAM NAME=movie VALUE="data/$number.swf"> <PARAM NAME=menu VALUE=false> <PARAM NAME=quality VALUE=best> <PARAM NAME=bgcolor VALUE=#FFCCCC> <EMBED src="data/$number.swf" menu=false quality=best bgcolor=#FFCCCC WIDTH=100% HEIGHT=100% TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></EMBED> </OBJECT> </body> </html> EOM # $headをsjisに変換 &jcode'convert(*head,'sjis'); # HTMLを出力 print $head; exit; =================================== 次に森さんの本に書かれているスクリプトをFlash内に記述し、 まずは、"dispcount"にcgiより抜き出したいdataが表示されるかどうかのテストをしています。 予定としては、取得できるdataがmodedata=1となって "dispcount"には"1"と表示されるはずだったのですが…。 起こった問題として cgiのファイル自体にはアクセスしているがFlash内の"dispcount"に出る表示が Content-type: text/html \n\n ? 以下の文章が全て表示されてしまう。 (Flashとやり取りしたいdataはその上の行に書いてあるのに…) また、なぜかFLASHを張り付けてある外側HTMLにテキストとして modedata=1Content-type: text/html と表示されてしまいます。 単純に"dispcount"に"1"と表示させたいだけなのですが…。 うまく動いておりません。 よろしくお願いします。 |
rin-ko | Åê¹ÆNo.6969 投稿日時: 2004-5-7 11:20 |
職人 居住地: 東京 投稿: 397
使用環境:
MacOSX10.5/10.4 WinXP SP3 MX2004Pro/CS3 |
Re: CGIとのデータ連係について ハゲ輝彦さん、こんにちは。
loadVariables()は、変数をムービーに読み込むアクションなので、CGIはムービーに読み込みたい変数と値のみを出力する設計にしなくちゃいけません。つまり、以下は不要です。
CGIでHTMLを吐かせたいなら、getURL()を使うとよいんじゃないでしょうか。 |
森 巧尚 | Åê¹ÆNo.6978 投稿日時: 2004-5-7 13:32 |
モデレータ 居住地: 宝塚 投稿: 650
使用環境:
.5/CS4/Safari3 XP+2000//IE6 |
Re: CGIとのデータ連係について やっぱりどういう状況で何が問題なのかがわかりにくいですね。
こちらの質問にちゃんと答えてくれたら、もうちょっと答えやすいのですが・・・ 引用: Aのサイトからこの別ウィンドウを開いた場合には こういう状況ですか? 1)www.A.com、www.B.comの2つのサイトがあって、それぞれに同じswfがある状況ですね。 www.A.com/a.swf、www.B.com/a.swf。 2)www.A.com/a.swfのボタンを押すと、001.swfが開き、001.swfの中のボタンを表示する。 3)www.B.com/a.swfのボタンを押すと、001.swfが開き、001.swfの中のボタンを非表示にする。 まず、呼び出される側の001.swfの中でボタンを表示/非表示にする処理は行っているのでしょうか? 「呼び出される側」にmodedataを渡したいということであれば、今のCGIは間違いです。 loadVariablesは「呼び出す側」にCGIで生成したデータを読み込むので、相手にはデータは送られません。 ※カウンターを参考にされているようですが、カウンターはCGIの値を自分自身に読み込んで表示しているだけで、値を表示させるswfが別にあるわけではありません。 呼び出すhtmlをCGIで作ろうとされているようですが、それだったらFlashの呼び出し方は間違いです。 rin-koさんが言われているようにgetURLを使わないといけません。 「呼び出される側」にmodedataを渡したいなら、getURLでCGIを呼び出してそのCGIで生成するHTMLにmodedataを記述して渡さなければいけません。 CGIで作る「htmlの中」のswfの後ろに「data/001.swf?mode=1」と記述します。CGIでの実際の記述なら「data/$number.swf?mode=$mode」ですが、CGIはお分かりですよね。 呼び出される側のflashではmodeに入っている値を見て、ボタンの表示/非表示を切り替えればできると思います。 $number.swfを使っているということは、たくさんswfがあって、それらの管理や修正が大変なのでCGIでまとめようとされているようですが、結局全てのswfを修正しないといけないですよ。 そもそも、サイトが2種類あるのなら、サイトA用のボタン有りswfとサイトB用のボタンなしswfの2バージョンを作って別々に起動するように全部作り直してしまえば、いいだけではないでしょうか。 これならばCGIはいっさい使わずに「目的」を達成できると思いますが。
|
ちーむどらむすこ | Åê¹ÆNo.6991 投稿日時: 2004-5-7 17:07 |
Bak@Fla巨匠 居住地: とうきょう 投稿: 16
使用環境:
Win7,FlashCS4 |
Re: CGIとのデータ連係について rin-koさん、おありがとうございます。
getURLは考え外でした... 森博士、たびたび、ごめんなさい。 まず、 引用:
ではないです。 swfがあるのはwww.A.comのみ。 そこにアクセスできるのは、A、Bのサイトからのみ。 そしてwww.A.comからだと、ボタンを表示 www.B.comからだと非表示 にしたいのです。 引用:
これはつまり、HTML内にあるData「data/001.swf?mode=1」をFlashが読みとれればいいのですか? というか、できるのですか? swfの後ろに付いてあるパラメータ(mode=1)を取得する方法とは? それが可能なのであれば、その方が全然助かります。 お願いしマッス!! |
森 巧尚 | Åê¹ÆNo.6997 投稿日時: 2004-5-7 18:21 |
モデレータ 居住地: 宝塚 投稿: 650
使用環境:
.5/CS4/Safari3 XP+2000//IE6 |
Re: CGIとのデータ連係について うーん。やっぱりどういう状況かわかりにくいですね。
引用: そこにアクセスできるのは、A、Bのサイトからのみ。 そのA、Bのサイトからは、具体的にどのように「アクセス」するのでしょうか。 それぞれのサイトのHTMLからのリンク?それぞれのサイトのswfのボタンからのリンク? また、呼び出すのはswfを直接?htmlを呼び出す? こういういくつものファイルにまたがって動作するシステムの場合、 「全ての状況」が明確にならないとどこが問題なのか見つけられないですよ。 引用: HTML内にあるData「data/001.swf?mode=1」をFlashが読みとれればいいのですか? HTMLのタグにある、swfの後ろに「?mode=1」と付けると(objectとembedの2ヶ所にswfがあるので2ヶ所)そのswfのルートにmode=1という変数が入ります。 わざわざ取得しなくても「mode」の変数を調べれば入っています。
|
ちーむどらむすこ | Åê¹ÆNo.7000 投稿日時: 2004-5-7 19:30 |
Bak@Fla巨匠 居住地: とうきょう 投稿: 16
使用環境:
Win7,FlashCS4 |
Re: CGIとのデータ連係について ハゲ輝彦です。
またまたすいません。森博士。 何度もお手数かけます...。 引用:
それぞれのサイトのHTMLからのリンクで、htmlを呼び出します。 引用:
modeの変数を調べると言うと……?? やり方、もうちょっとだけ具体的に…。 (すいません。己の理解力不足で…) |
森 巧尚 | Åê¹ÆNo.7005 投稿日時: 2004-5-7 21:15 |
モデレータ 居住地: 宝塚 投稿: 650
使用環境:
.5/CS4/Safari3 XP+2000//IE6 |
Re: CGIとのデータ連係について ハゲ輝彦さんが、このスレの最初の方でご自分でされていた方法でできますよ。
ダイナミックテキストのテキストボックスをルートに用意して、変数名「mode」と付けておけば、その中に表示されます。 その後の変数の使い方はご存知ですよね。「if (mode == 2) { button_mc._visible = false; }」などでムービークリップを非表示にすればいいわけです。
|
ちーむどらむすこ | Åê¹ÆNo.7007 投稿日時: 2004-5-7 22:25 |
Bak@Fla巨匠 居住地: とうきょう 投稿: 16
使用環境:
Win7,FlashCS4 |
Re: CGIとのデータ連係について 森はかせ?!
ありがとうございます。 できました。ばっちりでした。 ややこしくし過ぎていた様でした。 感謝いたします!! 以上、御報告! |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |