• 締切済み

メールフォームの設置方法に関しまして

はじめまして。 FLASH初心者ではございますが、いつもご丁寧な回答を拝見させていただき、日々FLASHを勉強しております。 この度はメールフォームの設置方法に関しましてアドバイスをいただきたく、書き込みさせていただきました。 私自身、html上でのcgiの設置知識は持ち合わせております。 現在こちらの状況は、ソフトはFLASH MXでname・mail・commentというテキストフィールドを作成し、リセットボタン・送信ボタンの画像を設置済みの状況です。 name・mail・comment箇所に1つの大きなムービークリップを置き(ボタンが適切?)、それぞれに変数名を記入している状況です。 下記のサイトを参考にさせていただいたのですが、 http://www.yoshimitsu-jp.com/yoshiko/flashkouza/mail/kouza1.html 特にこのサイト内に書かれている、 ==================================== 今作成したムービークリップをシーン1に配置してください。 FLASHMXを使用している方はシーン1のレイヤー1の1フレームに、 (コンテンツ 1 フレーム目のフレームスクリプト最上部) System.useCodepage = true; という一行を付け加えてください・・これを書き込まないと、文字化けします。 ==================================== という箇所の意味と、送信ボタン、及びリセットボタンの設定方法がわかりません。 どなたかアドバイスをいただけないでしょうか? 宜しくお願い致します。

  • Flash
  • 回答数2
  • ありがとう数8

みんなの回答

  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

サンプルをご使用とのことですので、サンプルに付属の解説・スクリプト中のコメント等に、設置方法や改造のポイントが書かれていないかをご確認ください。 まずは簡単な、エラーの方の話ですが。 数行にわたるスクリプトは、必ず1組の { } の中に書かなければならない決まりになっています。 (ちなみに、{ } の中に更に { } を入れ子にすることもできます) コピーした際にどこかに余分な { が入っていて、{ } が不対応になっていないかどうか、確認してみてください。  on(press)  {   ・・・  } というような書き方は、解説書などでは行数の都合であまり使われないようですが、{ } の対応が見やすくなるのでオススメです。 解説書ですと、  on(press){   ・・・  } というように、(press) の横に { が付いていることがあります。また、Flash の自動フォーマット機能や、リストから選択してスクリプトの入力を補助する機能をご利用の場合も、このスタイルで { } が自動的に挿入されます。 どちらのスタイルでも誤りではありませんが、{ } の不対応にはご注意ください。 ---------------- ステージにあるムービークリップは、インスタンスといって、シンボルの分身です。 インスタンスは拡大・縮小・回転・色や透明度など、属性の変更はできても、ボタンを増やしたり絵を変えたりするなどの内容そのものを編集することはできません。 内容そのものを変更する場合は、インスタンスの元になっているシンボルを編集します。 ステージのインスタンスをダブルクリックすると、元になっているシンボルの編集画面になります。 編集が済んだら、ステージの編集に戻ってください。戻り方は#1に書きました通りです。ステージの上部に書かれている「シーン1」という部分をクリックしてください。 ---------------- ご質問文にあるページを拝見しましたが。 このページでは、テキストフィールドもボタンも1つのムービークリップ内に作り、getURL を使って送信する方法(#1で説明した方法と同じです)が紹介されているようです。 ご使用のサンプルは同じサイトから入手されたものでしょうか?変数の名前や入力フォームの構成などが、少々違うようですが・・・。 作品の作り方・スクリプトの考え方は、作る人によって違います。どれが正しいとか、作り方がたった1つしかないとは限りません。 サンプルを入手したサイトや書籍には、そのサンプルに適した解説と使い方の説明があるはずですので、そちらをご参考になさってください。 この作り方ではないとすると、実物を見ないことには不明な点が多く、どこを変更すべきかははっきりとは言えません。 Flash MX からは、LoadVars というアクションでも変数を送信できるようになりました。getURL とは違い、「送信」ボタンがムービークリップの中になくてもいいですし、必要な変数だけを選択して送信することも可能です。 テキストフィールドと「送信」ボタンが違うムービークリップにあるのだとすると、LoadVars を使っているのかもしれません。 ActionScript は、フレームだけでなく、ムービークリップやボタンのインスタンスにも設定できます。 配置されている「送信」ボタンを選択して、「アクション」パネルを開いてください。 LoadVars を使っているとすると、  on(press)  {   //LoadVarsオブジェクトの生成   mail = new LoadVars();   //送信する情報の準備   mail.post_name = t1_2;   mail.post_addr = t2_2;   mail.post_comm = t3_2;   //情報を送信   mail.send( "***.cgi" , "_blank" , "POST" );  } 変数名やコメント等は違うと思いますが、大体このような感じのスクリプトになっていませんでしょうか? これですと、上記のスクリプトで post_name や post_addr にあたる箇所を、CGIで受け取る変数の名前に変更し、"***.cgi"の部分をCGIプログラムのURLに変更するだけでいいと思います。 LoadVars のイメージは、予め LoadVars というタイプのカゴを作り、その中に情報を用意して送信するようなものです。 Flash で使っている変数に、自分で分かりやすい名前を付けていたとしても、送信する情報を Loadvars に準備する時の名前(上記のスクリプトでは post_name など)がCGIが受け取る変数の名前になっていれば、問題なく情報が渡ります。 しかし、getURL では送信する変数を選択することができず、getURL を実行したムービークリップの中にある変数が、全て送信されます。Flash の方で変数に好きな名前を付けていると、CGIに正しく情報が渡らなくなりますから、最初からCGIが受け取る変数名にする必要があります。 ちなみに、#1の補足欄にあったスクリプトの意味ですが。 入力フォームの中には、最初は仮の文字列が入っていて、入力する時に消えるものがあります。 これを実現するためのスクリプトと思われます。 このスクリプトから察するに、テキストフィールドで表示している変数は t1_2 ・ t2_2 ・ t3_2 ではないかと思います。 スクリプト中の変数名だけ変更しても、テキストフィールドで表示する変数名の方も変えなければ、意図した動作にはなりません。 また、送信するのもテキストフィールドで表示している変数である場合は、スクリプト中の変数名とテキストフィールドで表示している変数名を、両方ともCGIが受け取る変数名と同じにしないと、CGIに情報が渡らなくなります。 あれこれいじっても上手くいかないようでしたら、無理にサンプルを使おうとせずに、ご質問文にあるサイトの解説を見ながら1から自作した方が、早いかもしれません。 単純なフォームであればそれほど難しくはないので、とりあえずは簡単なものから試作してみてはいかがでしょうか。

  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

Flash Player 5 以前では、Flash の外部と文字をやりとりする際のエンコード(文字を文字コードに変換し、データとして送受信できるようにする時の、変換のルール)に、Shift JIS という方式を使っていました。 これが、Flash Player 6 (制作ツールは Flash MX )からは UTF-8 ( Unicode )という方式に変わりました。 Flash Player 6 以降は、何も指定しなければ、Flash の外部とやりとりする文字は、全て UTF-8 のルールに従って処理されます。 しかし Flash Player 6 以降でも、Shift JIS 形式で記録されたテキストファイルを読み込んで使いたい時や、フォームから送られてきた文字を処理するCGIが Shift JIS を利用しているなど、従来の Shift JIS で処理したい場合もあります。 そこで、System.useCodepage = true; というスクリプトが必要になるのです。 System.useCodepage が false の時は、外部とやりとりする文字が、Flash Player 6 以降の標準である UTF-8 のルールで処理されます。最初はこの設定になっています。 System.useCodepage を true にすると、今まで通りの Shift JIS で処理されるようになります。 日本語と英語とでは文法が違います。日本語の文法で英語を解釈しようとしても意味が通じない・文章がおかしくなるのと同じで、文字の送信側と受信側とで使用しているエンコードが一致しない場合に発生するのが、いわゆる文字化けという現象です。 送信の際に呼び出すCGIプログラムが UTF-8 方式を採用しているのでしたら、Flash から送信する文字も UTF-8 で送らなければなりません。 また、外部から読み込んだテキストファイルが UTF-8 形式で記録されていた場合、System.useCodepage = true; を実行してしまうと、逆に文字化けが発生することになります。 解説サイトや解説書に System.useCodepage = true; を設定するようにと書かれていたからといって、どんな場合でも必ず実行しなければならないとは限りませんので、ご注意ください。 -------------- Flash から Web ページを開くことができる、getURL というアクションがあります。 この時、開くページがCGIプログラムであれば、 Flash 内で使われている変数をそのプログラムに送信することもできます。 ただし、送信されるのは、getURL を実行したムービークリップが持っている変数だけです。 例えば、ステージに配置したボタンが押された時に getURL を実行するようにスクリプトを書くと、_root 階層、つまりメインのタイムラインにある変数が全て送信されます。 この場合、ステージにムービークリップAがあるとすると、Aの持っている変数は送信されません。 仮に、送信者の名前やコメントを記入してもらうテキストフィールドを、「 mailform 」というムービークリップの中に配置しているとします。 テキストフィールドで表示する変数を、それぞれ、post_name ・ post_comment 、という名前だとします。 すると、「 mailform 」ムービークリップは、この2つの変数を持っていることになります。 ムービークリップ内に「送信」ボタンを作り、そこに  on(press)  {   //CGIに情報を送信   getURL( "***.cgi" , "_blank" , "POST" );  } (↑このスクリプトをコピーして利用する場合は、各行頭の全角のスペースを、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります) というアクションを設定すると、CGIプログラムに post_name と post_comment 変数を送信することができます。 なお、Flash MX からはムービークリップをボタンと同様に利用できるようになりましたが、「送信」ボタンは、必ずボタンシンボルとして作ってください。 ムービークリップをボタンとして使用した場合、「送信」ボタンのムービークリップが持っている変数が送信されることになります。今回は、送信したい変数を持っているのは「 mailform 」ムービークリップですから、CGIに情報を渡せなくなってしまいます。 -------------- 「リセット」ボタンとはつまり、テキストフィールドで表示する変数に空の文字列( Null ストリングといいます)を入れる機能、とも言えます。 変数に "" を代入すると、Null ストリングが入ります。  post_name = ""; これで、変数 post_name の内容は空になります。 「リセット」ボタンもボタンシンボルとして作り、同じく「 mailform 」の中に配置します。 そのボタンに、  on(press)  {   //入力された文字列をクリア   post_name = "";   post_comment = "";  } というアクションを設定してみてください。 テキストフィールドに入力した文字がクリアされるようになります。 ここでは仮に post_name と post_comment という変数で説明しましたが、実際には、テキストフィールドで表示するように設定した変数の名前を使用してください。 更に言いますと、テキストフィールドで表示する変数名とは、呼び出すCGIプログラム中で情報の送受信用に使っている変数のことです。 この名前が正しくないと、やはりCGIに正確に情報が渡らなくなります。 > name・mail・comment箇所に1つの大きなムービークリップを置き(ボタンが適切?)、それぞれに変数名を記入している状況です。 この箇所の意味が、少々分からないのですが・・・ 先述の通り、getURL で送信される変数は、getURL を実行したムービークリップにあるものだけです。 ですから、メールフォームを構成するテキストフィールドや「送信」「リセット」ボタンを、全て「 mailform 」という1つのムービークリップにまとめ、送信もこのムービークリップの中で行うのがポイントです。 作ったムービークリップは、それ自体はただのシンボルです。ステージに配置しなければ、ムービーには表示されません。 シンボルの編集中は、ステージの上部に「シーン1」と「(編集中のシンボル名)」と書かれています。「シーン1」をクリックすると、ムービーの編集画面に戻ります。 作ったシンボルは、「ライブラリ」ウィンドウに格納されています。フレーム1にキーフレームを作り、シンボルを「ライブラリ」ウィンドウからステージにドラッグして、配置してください。 ちなみに、この時配置されるのは、シンボルの分身である”インスタンス”と呼ばれるものです。 System.useCodepage = true; のスクリプトはどこで実行しても構わないのですが、とりあえず、メインのタイムラインで実行するものとします。 ActionScript はボタンやムービークリップのインスタンスのほかに、タイムラインのフレームにも設定することができます。フレームに設定する場合はスクリプト専用のレイヤーを用意し、描画した絵やムービークリップを配置するレイヤーとは区別しておくと便利です。 先ほど、「 mailform 」ムービークリップを置いたレイヤーとは別のレイヤーを、1つ用意します。このレイヤーを、ActionScript 専用のレイヤーとします。 スクリプト用のレイヤーの重なり順にはあまり意味はありませんが、とりあえず、一番上にしておくといいでしょう。 ActionScript 用のレイヤーのフレーム1に、やはりキーフレームを挿入して、  System.useCodepage = true; というスクリプトを書いてください。 長くなってすみませんでした。 不明な点がありましたら、補足してください。

ncp15056
質問者

補足

大変ご丁寧な返信本当に有難うございます。 ご説明は私のような初心者でもすべて理解させていただけたのですが、 FLASH MXの使用方法を熟知していない為、 市販の本と格闘しながら設置を試みております。 レイヤーから「α」をクリックして アクションスクリプトの見方を覚えたのですが、 既存のサンプルflaファイルを設定しておりますので、 既に下記のようなスクリプトが設置されておりました。 >>  t1.onSetFocus = function() { >>   if (t1_2 == "Name") { >>   t1_2 = ""; >>   } >>  }; >>  t2.onSetFocus = function() { >>   if (t2_2 == "Email") { >>   t2_2 = ""; >>   } >>  }; >>  t3.onSetFocus = function() { >>   if (t3_2 == "Comments") { >>   t3_2 = ""; >>   } >>  }; 「t1_2」などは変数だと思うのですが、 これを自分のわかりやすい変数に置き換え、 ムービークリップ内にgeturlのスクリプトを書き込めば大丈夫でしょうか? しかし、気になるのは 「ムービークリップ内に「送信」ボタンを作り・・・」 と書いていただいている点で、 既存のflaファイルにはName・Email・Commentsが ムービークリップ内にありますが、 リセットボタンと送信ボタンはムービークリップ外に設置されております。 ムービークリップを大きくしてボタンも含もうとするのですが、 現在含まれているName・Email・Commentsの文字も一緒に大きくなってしまい、 上手くボタンを含む事ができません。 またリセットボタンに関しまして ご指示いただきましたように下記のアクションの 各行頭の全角のスペースを、全て半角のスペースにしてペーストしたのですが、 >>  on(press) >>  { >>   post_name = ""; >>   post_comment = ""; >>  } >> というアクションを設定してみてください。 下記のようなエラーが出てしまいます。 ======================================= クリップボードアクション : 行 2:ステートメントブロックは '}' で終了してください。 { クリップボードアクション : 行 6:シンタックスエラー ======================================= どの箇所が悪いかご教授いただけないでしょうか? お手数をお掛けして申し訳ございません。

関連するQ&A

  • メールフォームの設置

    過去の質問にも目を通したのですが、質問させていただきます。 OSはWin xp(home)、サーバーはOCNの「Page ON」を使っています。 メールフォームの設置をしたいのですが、OCNのホームページにある記述では、メールの送信が出来ません。 <FORM METHOD="post" ACTION="/cgi-bin/formmail.pl"> <INPUT TYPE="hidden" NAME="recipient" VALUE="???@???.ocn.ne.jp"> [題名]:<INPUT NAME="subject" SIZE="30"><BR> [氏名]:<INPUT NAME="name" SIZE="30"><BR> [E-mail]:<INPUT NAME="email" SIZE="30"><BR> [コメント]:<INPUT NAME="comment" SIZE="30"><BR> <INPUT TYPE="submit" VALUE="送信"> <INPUT TYPE="reset" VALUE="クリア"> </FORM> このアドレスのところを、自分のものに入れ替えて記述しています。 過去の質問を拝見したところ、「mailto:」による設定は、xpで使えないようなので、これでいいと思うのですが・・・・・・どこか違うのでしょうか? 出来ればソースを記述していただけると嬉しいです。

    • ベストアンサー
    • CGI
  • メーラーを使ったメール送信フォームで・・・

    こんにちは。 sendmailが使えないので、以下のように メーラーを使用してメール送信するフォームを設置しています。 <FORM method="POST" action="mailto:xxx@xxx.ne.jp?subject=【メール送信】" enctype="text/plain">  :  : <INPUT type="submit" value="送信" name="submit"> <INPUT type="reset" value="リセット" name="reset"> 送信ボタンを押しても画面がそのままなので、 送信後はトップページへ戻るよう案内をしています。 これを、送信ボタンを押した後に「ご利用ありがとうございました」などといった 別のページへジャンプするように設定する事は可能でしょうか? 不可能なら今のままでいこうと思っていますが、 もし方法があれば変更したいと思っています。 ご存知の方がいましたらご教授ください。 よろしくお願いします。

  • ムービークリップで作成したボタンでCGIを表示させたいのですが・・・

    お世話になっております。 FLASH MX , WIN XP を使用しています。 FLASHで作られたお問い合わせフォームを編集しています。 ムービークリップインスタンスでできた「送信ボタン」にgetURLで KENTWEBのCGI「postmail」を読み込んで、メールを送信できるように したいと考えています。 ボタンインスタンスにCGIを読み込んだ時は、正常に変数を読み込み 入力内容をメール送信できるのですが、ムービークリップ インスタンスにCGIを読み込むと、変数を読み込めず「不正な処理」 となりエラーになってしまいます。 ムービークリップインスタンスでできたボタンでcgiを読み込む事は できないのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • Flash
  • Flashのメールフォームにcgiを設置 別ウインドウで・・・

    いつもお世話になります。 FlashMX使用のものです。 FlashできたメールフォームにKENT.WEBの「postmail」を設置しています。 設置する事はなんとかできたのですが、送信ボタンを押すとメール内容確認画面~送信完了のページが別ウインドウで開けるようにしたいのです。 現在のactionは on (press) { getURL("./postmail.cgi","_top","POST"); } となっています。 javascriptを使い別ウインドウを出すために上記を on (press) { getURL("javascript:window.open('./postmail.cgi','_top','POST');void(0)"); } に変更したのですが、ボタンを押すと「不明な処理」となってしまいます。 flashのみでできたhpなので「前画面に戻る」を押すとflashが最初まで戻ってしまい非常に面倒なので、どなたか解かる方いましたら宜しくお願いします。

    • ベストアンサー
    • Flash
  • Flashでロールオーバー中は・・・

    教えてください、Flash初心者です。FlashMX2004を使用しています。 1つのFlashファイルの中に、A,B,C,D,Eの5つのムービークリップがあります。メインのタイムライン上にはその5つのムービークリップを置いています。Aムービークリップの最後のフレームには「_root.gotoAndPlay("B");」というスクリプトがあり、BムービークリップにはCへ、CにはDへ・・・というように、何のアクションも行わなければ、AからEへ順次ムービーが進んでいく、というものです。また、それぞれのムービークリップには、それぞれ他のムービークリップへ自由にジャンプできるようにボタンも設置しています。Aムービークリップに置いてあるCボタンにロールオーバーすると、Cムービークリップの再生が始まる、という具合です。 で、ここで質問なんですが・・・今の状態であれば、例えばボタンでA ムービークリップからCムービークリップへジャンプすると、Cムービークリップへ行くのですが、Cの再生が終わると、自動的にDムービークリップへ移動します。(もちろん、そうなるようにしてるのですが・・・)ただ、ボタンで別のムービークリップへ移動した時だけは、そのムービークリップの再生後もそこでstopさせておきたいのです。 矛盾してるようですが、whileとかifとかを使えばできるのでしょうか??

  • phpを使ったメールフォームでメールが送信されない

    flash初心者です。 flash+phpを使い、メールフォームを作成しているのですが、 どうもメールが送信されないのです。 ボタンscript on (release) { getLoadVars = new LoadVars(); sendLoadVars.sendAndLoad("free.php", getLoadVars, "POST"); gotoAndPlay("sending"); } //別フレームに if (command == "end") { gotoAndStop("sendok"); } else if (command == "error") { gotoAndStop("senderror"); } else { gotoAndPlay("sending"); } phpの中身は 入力エラーチェックをして、OKだったら、DBにインサート するように書いてます そしてエラーだったら print "Content-type: text/plain\n\n"; print "command=error"; OKだったら print "Content-type: text/plain\n\n"; print 'command=end'; とプリントしています。 ※flashのテキスト入力オブジェクト(変数command)に出力させるようにしています。 以下のサイトを参考にして作ったのですが…。 http://www.game3rd.com/flash/f4/expert/mail/ エラーのフレームにも送信完了のフレームにも移動しなく、 ただ、送信中のフレームで止まっている状況です。 すみませんが、アドバイスお願いいたします。 flash pro8 winxp

  • MTOS内のページに設置したメールフォームについて

    いつもみなさんのアドバイスを参考にさせて頂いております。 早速ですが、MTサイト内にメールマガジンのフォームを設置したところ、実際に名前とメールアドレスを入力し送信ボタンを押しても名前が入力されていませんなどとエラーが表示されます。 メールマガジン自体は他サイトで使用しているものでメールマガジンで使用しているCGIも他サイトのサーバにて稼動しております。 ところが、使用しているタグ<form> ~ </form>までをそのままMTに貼り付けて設置してみてもうまく運用できません。 何か問題があるのでしょうか? ちなみにタグは以下の通りです。 <div id="mail_maga"> <form action="http://www.***/***.cgi" method="post"> &nbsp;<table id="AutoNumber1"><tbody><tr> <td colspan="2" class="mail_magat">☆ メルマガ登録</td> </tr><tr> <td class="mail_magast">お名前</td> <td class="mail_magain"><input type="text" name="お名前" size="30"></td> </tr><tr> <td class="mail_magast">メールアドレス</td> <td class="mail_magain"><input type="text" name="メールアドレス" size="30"> 半角英数字</td> </tr></tbody></table> <table id="AutoNumber2" class="mail_maga2"><tbody><tr> <td> <input type="hidden" size="1" name="code" value="0000a" /> <input type="hidden" size="1" name="mlcd" value="0000a" /> <input type="hidden" size="1" name="key01" value="2542666" /> <input type="hidden" size="1" name="HPADDR" value="http://www.***/***.html" /> <input type="submit" name="mode" value="送信" /> <input type="submit" name="mode" value="内容確認" /> <input type="reset" value="リセット" /> </td> </tr></tbody></table> </form> 何かアドバイスありましたら宜しくお願いします。

    • 締切済み
    • CGI
  • メールフォーム設置の件で

    html5upというサイト(https://html5up.net/)のDimensionというテンプレを使用しているのですが、メールフォームをうまく動作させる事が出来ません。テンプレだけでは動作しないようですが、どのようなものを設置すれば、よろしいでしょうか? ご教授、お願いいたします。 http://studio-key.com/tips/jquery-mailform-01 ここのjQueryを設置し、確認画面まではいけたのですが、送信までいたらず。sendmail.phpの箇所がわかりません。

  • ムービークリップ内のムービークリップ制御について

    誠に不勉強の段お許しください。 Flashでサイトを製作しているのですが、どうしても分からず投稿させていただきました。 仮に -rootにボタンとAムービークリップ配置しました。 また、Aムービークリップ内の10フレー目にBムービークリップを配置し、Bムービークリップ内にボタンを配置しています。 _rootのボタンからAムービークリップを制御して10フレーム目のBムービークリップを表示はできるのですが、-root上でAムービークリップのBムービークリップ内のボタンでBムービークリップを制御するのにはどうすればよろしいのでしょうか。 なにとぞご教授いただけましたら幸に存じます。

  • メールフォームの設置で自動で返信してくれない

    http://www.kent-web.com/data/postmail.html のCGIを取り付けているのですが、 問題なく、設置して管理者である 自分宛にメールが届きました しかし、 ・タグの記述 (4) <input type=checkbox name="cc" value="1" checked> メール控え必要 → メールの控えを CC で送信者へも返信します。 ただし、name="email" のフィールドへの入力が必須となります。 にあるように 入力した送信者からメールフォームが届きません。 どのあたりがおかしいのですか? さくらのレンタルサーバーを使っています。 name="email" のフィールドへの入力が必須となります。 の意味がわかりませんでした。 やってみたけどよく分かりませんでした http://iiiiiiiiii.web.fc2.com/sample1.html (ソースは 表示-ソースから見れます) のようにしてあるのですが、具体的にはどの記述が間違っているのでしょうか?

    • ベストアンサー
    • CGI