• ベストアンサー

CGIへの引数の渡し方

xyz37005の回答

  • xyz37005
  • ベストアンサー率51% (365/711)
回答No.3

HTMLファイルのINPUTタグ以外の方法でPOST形式のデータを送る方法はないと思います。 少なくとも私は知りません。 以前作ったHTMLとCGIのサンプルを紹介します。 -- form.htm ------------------------------- <html> <body> <form action="../../cgi-bin/kakunin.cgi" method="post"> <table><tr> <td>名前</td> <td><input type="text" name="name" size="30"></td> </tr> <tr> <td>出身地</td> <td> <select name="home"> <option value="大阪府">大阪府</option> <option value="京都府">京都府</option> <option value="兵庫県">兵庫県</option> <option value="和歌山県">和歌山県</option> <option value="奈良県">奈良県</option> </select> </td> </tr> <tr> <td>性別:</td> <td> <input type=radio name="sex" value="MAN" checked>男 <input type=radio name="sex" value="FIMALE">女 </td> </tr> <tr> <td>趣味:</td> <td> <input type=checkbox name="hobby1" value="PC">パソコン <input type=checkbox name="hobby2" value="SP">スポーツ <input type=checkbox name="hobby3" value="RD">読書 </td> </tr> <tr> <td><input type="submit" value="登録"></td> <td><input type="reset" value="クリア"></td> </tr> </table> </form> </body> </html> ------------------------------------------- -- kakunin.cgi ---------------------------- #!C:/Perl/bin/perl #フォーム(POST)の内容を受け取る read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); @pairs=split(/&/,$buffer); foreach $pair (@pairs){ ($name,$value) = split(/=/,$pair); $value =~ tr/+/ /; $value =~ s/%(..)/pack("C",hex($1))/eg; $form{$name} = $value; } $name = $form{'name'}; $home = $form{'home'}; $sex = $form{'sex'}; $hobby1 = $form{'hobby1'}; $hobby2 = $form{'hobby2'}; $hobby3 = $form{'hobby3'}; print "Content-type: text/html\n"; print "\n"; print "<HTML>\n"; print "<BODY>\n"; print "確認画面<br>\n"; print "<table border><tr> \n"; print "<td>名前</td><td>$name</td> \n"; print "</tr><tr> \n"; print "<td>出身地</td> \n"; print "<td>$home</td> \n"; print "</tr><tr> \n"; print "<td>性別</td> \n"; print "<td> \n"; if( $sex eq "MAN" ){ print "<input type=radio name='sex' value='MAN' checked>男 \n"; print "<input type=radio name='sex' value='FIMALE'>女 \n"; }else{ print "<input type=radio name='sex' value='MAN'>男 \n"; print "<input type=radio name='sex' value='FIMALE' checked>女 \n"; } print "</td> \n"; print "</tr><tr> \n"; print "<td>趣味</td> \n"; print "<td> \n"; if( $hobby1 eq "PC" ){ print "<input type=checkbox name='hobby1' value='PC' checked>パソ\コン \n"; }else{ print "<input type=checkbox name='hobby1' value='PC'>パソ\コン \n"; } if( $hobby2 eq "SP" ){ print "<input type=checkbox name='hobby2' value='SP' checked>スポーツ \n"; }else{ print "<input type=checkbox name='hobby2' value='SP'>スポーツ \n"; } if( $hobby3 eq "RD" ){ print "<input type=checkbox name='hobby3' value='RD' checked>読書 \n"; }else{ print "<input type=checkbox name='hobby3' value='RD'>読書 \n"; } print "</td> \n"; print "</tr></table> \n"; print "</BODY>\n"; print "</HTML>\n"; exit; -------------------------------------------

関連するQ&A

  • フォーム

    こんにちは。HTMLのフォームについて質問です。 下のようなソースで、bbbの送信ボタンを押した時にはAAAの内容とBBBの内容を、cccの送信ボタンを押した時にはAAAの内容とCCCの内容を送信する、という方法はありますでしょうか。 実際に作成しているものは、BやCの形が20件ほどあるので、AAAをBとCのフォームにそれぞれ書くというのは非常に効率が悪く、「他にもいい方法があるよ」というものでも結構ですので教えていただけたら、と思います。 <form name="formA"> <input type="text" name="AAA" /> </form> <form name="formB"> <input type="text" name="BBB" /> <input type="submit" name="bbb" /> </form> <form name="formC"> <input type="text" name="CCC" /> <input type="submit" name="ccc" /> </form>

    • ベストアンサー
    • HTML
  • submitではなくbuttonで送信

    事情があり、submitではなくbuttonでフォームのデータを送信したいのですが、以下のように書くとbuttonでは4567が送信されません。 <form action="test.cgi" method="post"> <INPUT type="hidden" name="aaa" value="1234"> <INPUT type="submit" name="bbb" value="4567"> </form> ↓ <form action="test.cgi" method="post"> <INPUT type="hidden" name="aaa" value="1234"> <INPUT type="button" name="bbb" value="4567" onclick="submit();" > </form> submitと同じように、bbbのデータ4567も送信するにはどのように書けばよいのでしょうか? 宜しくお願いします。

  • PHPでフォームからの送信

    PHPでフォームからデータを送信する方法について教えてください。例えばPHPファイルの中に下の様にフォームを作成して、送信ボタンを2つ作ります。一つのボタンをクリックすると全てのフォームの情報が送信されてしまいますが、独立して送信できるようにはできないのでしょうか。簡単にでもできるかできないかを教えていただけましたら、あとは自分でなんとかがんばりますので、どなたか教えていただけれますと幸いです。宜しくお願いします。 <form action="abc.php" method="post"> AAA:<input type="text" name="simei"> BBB:<input type="password" name="pass"> <input type="submit" value="送信"> </form> <form action="abc.php" method="post"> CCC:<input type="text" name="simei"> DDD:<input type="text" name="pass"> <input type="submit" value="送信"> </form>

    • ベストアンサー
    • PHP
  • 引数処理に$ENV{'PATH_INFO'}を用いた際のクッキーについて

    自作cgiの引数を $ENV{'PATH_INFO'}を用いた形式 (hoge.cgi/aaa/bbb/cccという形式)に変更しました。 ところが、組み込んでいるアクセス解析用のクッキーが 本来ならば hoge.cgiに対してクッキー1個となるはずですが、 hoge.cgi で1個目 hoge.cgi/aaa で2個目 hoge.cgi/aaa/bbb で3個目 hoge.cgi/ccc で4個目  ・・ と、引数が変わるたびに発行されてしまいます。 ブラウザで確認すると同じ内容のクッキーが アクセスした際の引数の分だけズラズラと羅列されています。 本来あるべき形である hoge.cgiに対してクッキー1個にするには どのようにしたら良いのでしょうか。

    • ベストアンサー
    • CGI
  • javascriptでCGIを実行するには

    htmlタグ <form method="post" action="・・・/cgi-bin/gogo.cgi"> <input type="text" name="name" size="20" value=""> <input type="submit" value="送信"> 上記で送信ボタンを押すとcgi側でnameを受け取れますが、 以下の場合はcgiは動作するのですが、nameを受け取れません、 受け取れる方法を教えてください。 <script type="text/javascript" language="javascript"> <!-- function gogo(){ document.write('<img src="・・・/cgi-bin/gogo.cgi">'); } // --> </script> </head> <body> <form method="post" action="javascript:gogo()"> <input type="text" name="name" size="20" value=""> <input type="submit" value="送信"> </form>

  • 1つのフォームで2つのcgiにデータを送るには

    どうぞよろしくお願いします。 テキストエリアにデータ入力して送信ボタンを押すと、 入力した内容が2つのcgiに送られるというようにしたいのですが、こういったことは可能でしょうか? イメージとしては下記のような感じです。 <form action="CGI名1" action="CGI名2" method="POST"> <inpu type="text" name="text1" size="32"> <input type="submit" value="送信"> </form> 両方の送信結果を別々のウインドウで表示します。 もしformタグでは不可能な場合、何か代換法がありましたらよろしくお願いいたします。

    • 締切済み
    • CGI
  • 同じフォーム内で、押下するボタンによって、飛び先のページ(cgi)を変

    同じフォーム内で、押下するボタンによって、飛び先のページ(cgi)を変えたい。 例えば、 以下のように、同じフォーム内に2つのボタンを用意し、 片方のボタンをクリックすると、現在のページ(aaa.cgi)へ戻り、 もう片方のボタンをクリックすると、別のページ(bbb.cgi)へ飛ぶようにしたい。 なお、何れのボタンもサブミットしたい。 ↓(aaa.cgi)================================= : <form name="frm1" action="???" method="post"> <input name="t1" type="text"> <input name="t2" type="text"> : <input name="b1" type="button" onClick="submit();"> <input name="b2" type="button" onClick="submit();"> : </form> : ↑(aaa.cgi)================================= 良い方法はないでしょうか。 ご存知の方、ご教授ねがいます。 よろしくお願いします。  

    • ベストアンサー
    • Perl
  • phpでのメールフォームの作成について

    HTMLで <form action="mail.php" method="post"> <input name="aaa" type="checkbox" id="aaa" value="AAA" checked> <input name="bbb" type="checkbox" id="bbb" value="BBB" checked> <input name="ccc" type="checkbox" id="ccc" value="CCC" checked> </form> として、次に進むボタンを押すとmail.phpに飛び mail.phpでは、チェックされたものだけを表示したいのですが、どうすればよいでしょうか? もし、AAAとBBBが選ばれたら あなたが選んだのは AAA、BBBです。 と表示したいです。そのあとにメールフォームを続けるつもりです。 ご教授よろしくお願いします。

    • 締切済み
    • PHP
  • 1つのsubmitボタンで2つのCGIを呼び出すことは可能ですか?

    今は、htmlで <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> </head> <body> <form action="abc.cgi" method="get"> 以下省略 <input type="submit" value="送信"> </form> <form action="xyz.cgi" method="get"> 以下省略 <input type="submit" value="受信"> </form> </body> </html> という感じで書き、2つのボタンで個々に2つのCGIを呼び出していますが、 これをメールの送受信のように、1つのボタンで2つのCGIを呼び出すことは可能なのでしょうか。 教えてください。お願いいたします。

    • ベストアンサー
    • CGI
  • 複数FORMの一括実行について

    通常であれば同一サイト内に下記のソース(フォーム)が入るのですが、 これを改良しサイト上で希望の送信先をチェックボックスで選択し一回の操作で複数のcgiを実行したく思います。 良いcgiがあれば教えてください。 又は改造ができるcgi、修正方法を分かりましたらお教え願います。 サイトA <form action="https://aaa.cgi" method="post"> <input type="hidden" name="名前" value="name"> <input type="hidden" name="メール" value="mail"> <input name="Submit" type="submit" value="送信"> </form> サイトB <form action="https://bbb.cgi" method="post"> <input type="hidden" name="名前" value="name"> <input type="hidden" name="メール" value="mail"> <input name="Submit" type="submit" value="送信"> </form> サイトC <form action="https://ccc.cgi" method="post"> <input type="hidden" name="名前" value="name"> <input type="hidden" name="メール" value="mail"> <input name="Submit" type="submit" value="送信"> </form>

    • 締切済み
    • CGI