こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Perl URL に GET で送られてきた変数の処理について

サーバサイドプログラムのカテゴリで質問するようアドバイスを受けました。
こちらで再度質問させてください。

FLASHでバナーを作りました。
FLASHでボタンを作り、


on (release) {
getURL("http://~hogehoge.com/", "_self", "GET");
}


とaction scriptを書きました。
きちんとボタンは機能し、私のサイトが開くようにできました。


次に、このバナーをクリックしたのはどこのページからなのか
(バナーを設置してくださったサイト様のページURL)を知りたいと思ったのですが、
このままだとアクセスログにリンク元URLが残りません。


調べてみたら、FlashVarsを使う方法が紹介されていたので、
見よう見まねで配布する際の設置タグの中に次の2行を加えました。

<param name=FlashVars VALUE="text1=a">
<EMBED src="no_1.swf" FlashVars="text1=a" quality=high~

ここでギブアップです!

わたしのサイトのアクセス解析CGI(Perl)にリンク元を残すには
どのようにすればよいのか、ご教示いただけませんでしょうか。

投稿日時 - 2006-10-22 00:15:31

QNo.2488667

困ってます

質問者が選んだベストアンサー

どうもです。

「FlashVarsの使い方」
http://oshiete1.goo.ne.jp/qa2488169.html
 ↑教えて!goo ↓OKWave (同じです)
http://okwave.jp/qa2488169.html

の#1で回答した者です。


実現したいことを整理しましょう。
やりたいことをすごくおおまかに書くと次のようになります。

 JavaScript で HTML の URL取得
         ↓
      SWF に送信
         ↓
      CGIに送信
         ↓
     CGI でデータ保存


FlashVars と getURL() の役割部分は,

      SWF に送信 … FlashVars
         ↓
      CGIに送信  … getURL()


ここの部分だけです。
ここは最も簡単で,ご質問で書かれている状態で大丈夫だと思います。

前回のご質問では,

> どのようにすればよいのか、ご教示いただければ幸いです。

と書かれているので,
次の段階は

      CGIに送信  … getURL() (完了)
         ↓
     CGI でデータ保存

の「CGI でデータ保存」なので,
サーバサイドプログラミングのカテゴリで

> 『URL に GET で送られてきた変数を,
> どのようにすれば アクセスログ として
> サーバ上に残せるのか。』

という質問をしてみてくださいとアドバイス差し上げたわけです。
しかし,その前に,
 JavaScript で HTML の URL取得
の方もできていないのであれば,
まずそちらを探さねばなりません。

これは,こちらの質問スレッドの#1の方の書かれている方法でも良いと思いますし,
FlashVars を使う場合も,

FLASH-JP.COM - フォーラム
「フラッシュが表示されてるページのURLを取得する方法教えてください」
http://www.flash-jp.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=1951&forum=8

のようになります。
つまり,

> バナーを貼って頂くサイト様のHTMLに、
> かなり手を入れてもらわなければならなくなってしまい

ということになってしまいます。


とにかく,実現したいことを明確に整理し,

 JavaScript で HTML の URL取得
         ↓
      SWF に送信
         ↓
      CGIに送信
         ↓
     CGI でデータ保存

これを1つずつクリアしなければ,
書かれているようなことは出来ません。

これはかなり難しいことだと思います。
JavaScript は環境に大きく左右されますし,
クライアントサイドで JavaScript を無効にしていたら,
URL を送る以前に,
Flash の バナー自体が表示されなくなる可能性が十分あります。
その辺もふまえなければなりません。
ですからかなり難しいことなのです。

リンク用バナーの場合,
だから普通そんなことはしないでしょう。
アフィリエイトなどのリンクバナーで,Flashを使用する場合は,

 Aさんには FlashVars="text1=a"
 Bさんには FlashVars="text1=b"
 Cさんには FlashVars="text1=c"

などと書くように 値を割り振って置いて,
a が来たら,Aさんに 10円加算, c が来たら Cさんに 10円加算…
のようにしていると思います。
しかし,
HP に置いてあるだけの Flash 配布バナーであればこの方法は無理です。
だから普通はそういうことはしません。


- - - - - - - - - - - - - - 

普通はそういうことはしないので,
代案を2つほど出させていただきます。



◎代案1「Flash をやめてGIFアニメのバナーにする」

GIF だとリファラーが簡単に取れます。
また,imgタグ で HTML に貼り付くので,ユーザーが使うのもすごく簡単です。
Flash のパブリッシュで GIF アニメにもパブリッシュできます。
反面,
GIF アニメにすると画像が汚くなるのと,ファイル容量が重くなるのが問題です。



◎代案2「SWFのURLをサーバに送信する」

ActionScript には _url (MovieClip._url プロパティ) があって,
ムービークリップ(_rootを含む)のURLが取得できます。
SWF が貼り付けられている URL ではありません。
SWF 自体のURLです。

「Flashドキュメンテーション
 _url (MovieClip._url プロパティ)」
http://livedocs.macromedia.com/flash/8_jp/main/00002528.html

上記サイトは Flash 8 のヘルプサイトですが,
_url 自体は,Flash 4 から使用できます。

これを書かれている物に対応させるとこうなります↓

on (release) {
var test1 = this._url
getURL("http://~hogehoge.com/", "_self", "GET");
}

ローカルで実験した場合,
URLが文字化けするかもしれませんが,これで,

http://~hogehoge.com/?test1=file○○/△△/××.swf

という感じで SWF のある場所が送信されます。


- - - - - - - - - - - - - - - - 

上の 代案1 or 代案2 の方法を使うと,
 JavaScript で HTML の URL取得
の部分が省略できます。

あとは,CGI でそのURLをどう保存するかという問題になります。

と言う感じで,
実現したいことを明確にし,
ある程度妥協案も考えたうえで
プログラムのコーディングをしてください。
この最も重要である「コーディングの前段階」がしっかりしていないと,
質問をしてもまともにちゃんとした回答は返ってきません。

私は CGI に関しては素人なので,
この辺で退散致します。

投稿日時 - 2006-10-22 07:12:12

お礼

sassakunさま
度々教えて頂き、大変感謝しておりますm(_ _)m

GIFアニメーションではできないバナー(ティッカー)だったので、
_urlプロパティ(?)を使う方法を試してみました。

教えていただいたとおり

on (release) {
var test1 = this._url
getURL("http://~hogehoge.com/", "_self", "GET");
}

と記述しただけで、アクセスログに
http://自サイト/?est1=file○○/△△/××.swf
と(文字化けしつつも)記録が残るようになりました。

%とかって文字化けしていることと、
「リンク元」としてではなく、
http://自サイト/?est1=file○○/△△/××.swfが閲覧されました、
と「閲覧されたページとして」記録に残るのが微妙ですが(^^;)
とりあえずなんとかなりました!

貴重なお時間を割いて頂き、大変ありがとうございました!

投稿日時 - 2006-10-22 23:56:18

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

何がしたいのか良くわかりませんが・・・Flash内のリンクをクリックしたときにリファラーを送信するようにすると言うことでしょうか。

CGIは関係ないですが、このページで参考になりますでしょうか。

参考URL:http://www.gac.jp/article/index.php?stats=question&category=8&id=4771&command=msg

投稿日時 - 2006-10-22 00:27:13

補足

調べて頂き、ありがとうございますm(_ _)m

分かりにくかったようですみません・・・
わたしのホームページへのリンクが張ってあるFLASHバナーを作っています。
配布したバナーがクリックされ、わたしのサイトにアクセスがあったとき、
どのページからアクセスがあったのか知りたいのです。
サイトのアクセスログ(CGI)に残したい、という主旨でした。

ページを紹介して頂きありがとうございました!
興味深かったのですが、教えていただいたページの内容だとバナーを貼って頂くサイト様のHTMLに、
かなり手を入れてもらわなければならなくなってしまい、
バナー配布の観点からいうと使いにくいようです。

投稿日時 - 2006-10-22 00:59:30

あなたにオススメの質問