NEWS

2017.10.21 「バージョンごとの機能比較」を更新しました。

  • Web creators

ActionScript

UIコンポーネントを利用したCGIとの連携(BIGLOBE対応版)

概要

FLASHはCGIと連携することが可能なのでメールフォームや掲示板等として利用できます。
しかし、CGIの実行が別サーバの場合(BIGLOBEユーザ等)はSWFの呼び出し方法が異なるため、特殊な設定方法が必要です。

サンプル解説

2つのラジオボタンのどちらかを選択して「送信」ボタンを押してください。
「ユーザエージェント」はあなたが現在使用している端末のOS、ブラウザ情報を表示します。
「接続ホスト」はあなたが現在使用している回線のIPアドレスが表示されます。

作成法

(1) CGIの作成
  ・テキストファイルに以下を明記する。
 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/local/bin/perl
print "Content-type: text/plain\n\n";
$date = 'result=';
$buffer = $ENV{'HTTP_USER_AGENT'};
$address = $ENV{'REMOTE_ADDR'};
 
if( $ENV{'REQUEST_METHOD'} eq "POST" ) {
 read(STDIN, $form_data, $ENV{'CONTENT_LENGTH'});
} else {
 $form_data = $ENV{'QUERY_STRING'};
}
 
@pairs = split( /&/, $form_data );
foreach $pair ( @pairs ) {
 ( $name, $value ) = split( /=/, $pair );
 $value =~ tr/+/ /;
 $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
 $FORM{$name} = $value;
}
 
if($FORM{'mes'} eq '1'){
 print "$date$buffer\n";
}elsif($FORM{'mes'} eq '2'){
 print "$date$address\n";
}
  ・「cgi.cgi」と名前をつけて保存する。
(2) UIコンポーネントを選択する
  ・コンポーネントウィンドウより「Button」をダブルクリックしてステージに配置する。
  ・コンポーネントウィンドウより「RadioButton」をダブルクリックしてステージに配置する。(2つ)
UIコンポーネントの選択
(3) シンボルをステージに配置
  ・ActionScriptを設定するレイヤー作成する。(レイヤー名をActionとする)
  ・テキストエリアをダイナミックテキストとして配置する。
  ・設置した「Button」のコンポーネント名を「submitButton」と設定する。
ステージに配置
(4) ステージに配置したラジオボタンのパラメータを設定
  ・1つ目のラジオボタンを設定する。
1つ目のラジオボタンを設定
  ・2つ目のラジオボタンを設定する。
2つ目のラジオボタンを設定
(5) ステージに配置したテキストエリアのパラメータを設定
(6) 「Action」レイヤーにActionScriptを設定
01
02
03
04
05
06
07
08
09
10
11
12
stop();
radioListener = new Object();
radioListener.click = function (evt){
 mes = evt.target.selection.data;
}
radioGroup.addEventListener("click", radioListener);
 
submitListener = new Object();
submitListener.click = function (){
 loadVariablesNum("cgi.cgi",0, "post");
}
submitButton.addEventListener("click", submitListener);
(7) SWFファイルとCGIファイルを同じ階層に置く
  ・CGIファイルのパーミッションを「755」にする。(CGIが動作する環境の時での設定です)
 

解説

CGIからのデータをFLASHで受け取るために、CGIの実行結果を「***=」から始まるようにしています。
これは外部のテキストファイルを読み込む際と同様の考え方です。
(1)の04、05は環境変数を利用して閲覧者のOS・ブラウザ情報と接続元のアドレスを取得しています。
21よりラジオボタンのチェックにより表示内容を分岐しています。
(4)のdataの個所がCGIに渡す値です。
しかし、ActionScriptで渡す値を変数に格納しないとCGIに引き渡さないため、(7)の02〜06でその処理を行っています。
06はラジオボタンがチェックされると03のファンクションが呼び出されます。
同様に、(7)の08〜12は送信ボタンが押された時の処理です。

追記

CGIの実行が別サーバの場合、バブリッシュしたHTMLファイル内のSWFの指定個所を「http://***/CGIを置いたフォルダ名/***.swf?cgi=http://***/CGIを置いたフォルダ名/***.cgi&」と明記することで動作可能になります。

ページ上部へ