• 締切済み

CGIに変数を送る際のアドレス

メールフォームに変数を送ろうとしています。 ただ、送り元がデザインの制約で<FORM>のボタンではなく、<A>のリンクになってしまってます。 <A>で変数を送ろうとすると、 href="./mail.cgi?hen1=xx&hen2=xxx" という形ですよね。そうすると、アドレス欄に変数がすべて載ってしまいますよね。 これをどうにかして非表示にすることは出来ないのでしょうか?(いわゆるtype=hidden的な事) または、<FORM>内で文字列をボタンにすることは可能なのでしょうか?

みんなの回答

  • asahina02
  • ベストアンサー率47% (95/202)
回答No.8

> <A href="./mail.cgi?hen1=xx&hen2=xxx"> この場合で取れて、 "<FORM name=\"form\" method=\"post\" action=\"../mail/mail.cgi\"> こっちだと取れない・・ メソッドがGETの場合とPOSTの場合なので、データの取り方違いますけど、大丈夫ですか? ちなみに前者(GET)の場合、$ENV{'QUERY_STRING'}から取得できますが、 後者(POST)の場合read STDIN, $query, $ENV{'CONTENT_LENGTH'};こんな感じの取得になるかと思います。

すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.7

#6補><A href="./mail.cgi?hen1=xx&hen2=xxx">方式だとちゃんと表示(取得)されるんです。 そういえば、 #2では action=\"../mail/mail.cgi\" になっていますね。 action=\"./mail.cgi\" ではないのですか?

すると、全ての回答が全文表示されます。
  • asahina02
  • ベストアンサー率47% (95/202)
回答No.6

#1,3です。 > 何か間違っているでしょうか? 見た感じ、フォームの書式に間違いはないようですね。 実は送られていないのではなく、取得方法が間違っているということはないですか?

master-3rd
質問者

補足

返答ありがとうございます。 <A href="./mail.cgi?hen1=xx&hen2=xxx">方式だとちゃんと表示(取得)されるんです。 フォームにしたからといってそっちを変更する必要は無いと思っていたのですが、何か変えないといけなかったでしょうか?

すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

#4で\"するのを忘れていました! Perlなら print qq(<FORM name="FORM1" method="post" action="../mail/mail.cgi">\n); でもいいかも

すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

print "<FORM method=\"post\" action=\"../mail/mail.cgi\">\n"; を print "<FORM name="FORM1" method=\"post\" action=\"../mail/mail.cgi\">\n"; とか名前を付けてやります。 print "<span onclick=\"document.FORM1.submit()\">&nbsp;&nbsp;$name について問い合わせメールを出す&nbsp;&nbsp;</span>\n"; 付けた名前を指定してやります

すると、全ての回答が全文表示されます。
  • asahina02
  • ベストアンサー率47% (95/202)
回答No.3

#1です。 こんな感じでしょうか。アンカータグのhref属性は適当な値を入れておいて問題ないです。 フォーム名には formタグでname属性を指定して、それを使います。 onclickでのreturn(false)でアンカータグでの遷移を抑制しています。 <form method="post" action="mail.cgi" name="mail_form"> </form> <a href="#" onclick="document.test_form.submit();return( false );">問合せ</a> また、#2さんの方法でも同様です。 #2さんの方法そのままだと文字列部分がクリック出来るかどうかわからない為、<u>タグでアンダーラインにしたり、style="cursor:pointer"でカーソルを変えたりすると良いのではないでしょうか。

master-3rd
質問者

補足

返答遅れてすみません。 リンクとして機能する(文字色反転・カーソル変化)し、ちゃんとリンク先にも移動するのですが、hiddenの内容を送ってくれません。 print "<FORM name=\"form\" method=\"post\" action=\"../mail/mail.cgi\">\n"; print "<TD>\n"; print "<input type=hidden name=li_no value=$no>\n"; print "<input type=hidden name=li_old value=$old>\n"; print "<input type=hidden name=li_name value=$name>\n"; print "<a href=\"#\" onclick=\"document.form.submit();return( false );\">&nbsp;&nbsp;$name について問い合わせメールを出す&nbsp;&nbsp;</a>\n"; print "</TD>\n"; print "</FORM>\n"; 何か間違っているでしょうか?

すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

><FORM>内で文字列をボタンにすることは可能なのでしょうか? このことのためにリンクにしているのだったら <button type="submit">文字列</button> とすればいいと思います。 あるいは、形がボタンになってはいけないのだったら <span onclick="document.フォーム名.submit()">文字列</span> のようにすればいいと思います。

master-3rd
質問者

補足

>形がボタンになってはいけないのだったら これを実現したかったんです。 で、やってみましたがうまく出来ません。 print "<TR>\n"; print "<FORM method=\"post\" action=\"../mail/mail.cgi\">\n"; print "<TD>\n"; print "<input type=hidden name=li_no value=$no>\n"; print "<input type=hidden name=li_old value=$old>\n"; print "<input type=hidden name=li_name value=$name>\n"; print "<span onclick=\"document.フォーム名.submit()\">&nbsp;&nbsp;$name について問い合わせメールを出す&nbsp;&nbsp;</span>\n"; print "</TD>\n"; print "</FORM>\n"; print "</TR>\n"; まずは、ボタンをクリックできませんでした。 さらに、「フォーム名」には何を当てはめればよいのでしょう?

すると、全ての回答が全文表示されます。
  • asahina02
  • ベストアンサー率47% (95/202)
回答No.1

こういう方法ではいかがでしょうか? ページ内にFormを用意 変数を全てHidden属性で用意 リンクを用意 ※リンク自体は機能しないようにしておく リンクをクリックした時にJavaScriptを使用してページ内のフォームを実行させる。

master-3rd
質問者

補足

>ページ内にFormを用意 方法OKです。 >変数を全てHidden属性で用意 これも方法OKです。 >リンクを用意 これも方法OKです。 >※リンク自体は機能しないようにしておく ?どうしたら良いのでしょう? >リンクをクリックした時にJavaScriptを使用してページ内のフォームを実行させる。 ?どうしたら良いのでしょう? ちなみに、変数を送ろうとするページ(リンク元ページ)は別のCGIなのですが、問題ないのでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A