• ベストアンサー

Perl(cgi)からPerl(cgi)への引数

(1)Perl(cgi)から(2)Perl(cgi)へ引数(データ)を渡す方法を教えてください。 プログラムの流れとしましては、 (1):データベースを検索&該当結果の番号をリンクで表示 (2):(1)でクリックしたリンクと対応する結果を表示 となっております。 また、セキュリティの事を考えて「POST」で送りたいと考えています。 よろしくお願いいたします。

  • Perl
  • 回答数3
  • ありがとう数2

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

  • ベストアンサー
  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.2

表題を見たときに「CGIからCGI」ということで、「そりゃ無理」だと思って内容を見たら普通の処理のことだったので遅まきながら回答させていただきます。 要するにひとつ目のCGIが出力したHTMLリンクから次のCGIを呼び出すということですね。 方法というか書き方はいくつかありますが、わかりやすい例をひとつ ひとつ目のCGIがリンクをはき出す際にリンク先をJavaScriptにしてJavaScriptからフォームにパラメータをセットしてサブミットする方法です。 お役に立てればさいわいです。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ <script language="javascript"> <!--  function fCallNextCGI(P1,P2,P3,...Pn){   // パラメータ設定   document.form.H1.value = P1;   document.form.H2.value = P2;   document.form.H3.value = P3;     :   document.form.Hn.value = Pn;   // 送信   focument.form.submit();  } //--> </script> <body> <!-- ここからフォーム --> <form name="form" method="POST" action="NextCGI.cgi">  <input type="hidden" name="H1" value="">  <input type="hidden" name="H2" value="">  <input type="hidden" name="H3" value="">    :  <input type="hidden" name="Hn" value=""> </form> <!-- ここまでフォーム --> <!-- ここからリンクリスト --> <a href="#" onClick="fCallNextCGI('文字列1','文字列2','文字列3',...'文字列n')">リンク1</a><br /> <a href="#" onClick="fCallNextCGI('文字列1','文字列2','文字列3',...'文字列n')">リンク2</a><br /> <a href="#" onClick="fCallNextCGI('文字列1','文字列2','文字列3',...'文字列n')">リンク3</a><br />    : <a href="#" onClick="fCallNextCGI('文字列1','文字列2','文字列3',...'文字列n')">リンクn</a><br /> <!-- ここまでリンクリスト --> </body> ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 蛇足  1.「そりゃ無理」と思った理由:CGIがCGIを多重に呼び出せる機構があったら無限呼出でサーバを簡単にダウンさせることができるため、サーバサイドのスクリプトを多重に起動することはできないような仕組みになっています(例:CGIで出力されたHTML内にSSIを記述して動作を期待すること)。 ただしCGIから呼び出されたプログラムが別のプログラムを起動して処理を受け渡すことは可能です。  2.上記例でリンクタグの「href=""」内に直接JavaScriptを書くことも可能ですが、対応していないブラウザがあるので要注意

kk1159
質問者

お礼

説明不足ですみません。 早速やってみます。 ありがとうございました!!!

その他の回答 (2)

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.3

ANo.2です。 たびたびすいません。 忘れていたことをみっつ 1.提示しました例は、一つ目のCGIがはき出すHTMLの例です 2.文字コードには気をつけましょう。文字化けによる誤動作がいやならS-JISは使わないことです。 3.POSTメソッドの方がGETメソッドと違ってセキュリティ上安全ということはありません(多少のリスクは減りますが)。受信する側のCGIの作り方しだいです。

回答No.1

少しイメージがわかりにくいので、的外れかもしれないですが、 ひとつのhtmlに<form></form>は複数かけるので別のCGIにpostしたり、 同じCGIに別のhiddenデータを送ることは可能だと思います。

kk1159
質問者

お礼

アドバイスありがとうございます! 私の書いた内容が分かりにくかったすよね。。。 イメージは↓な感じなんです。 (1)[html]:入力画面 (2)[cgi]:(1)の入力値をデータベース内のデータと比較 &該当する各データのリンクを表示 (3)[cgi]:(2)でクリックしたリンクに該当するデータを表示 それで(2)→(3)でデータを渡す方法が分からず困っています。 データが大きいので無理やりcookieを使うのは難しいので、 URLにパラメータとしてくっつける方法にしようかと考えています。 (見栄えよりも、作る方を優先しまして…)

関連するQ&A

  • PerlでCGIの書き方

    今、HTML:Templateを用いてCGIのプログラムを書いています。 基本的にCGI上のボタンをおすとPOSTで情報をわたして、次のCGIにいき、そこからTMPLを読み出して、画面を表示してるのですが、画面場のボタンをおしてもCGIを更新せずに、Perlの実行だけすることは可能ですか?あるいは、POSTでCGIに届いた情報をIF文で中身を確認して、表示するTMPLをかえて、Perlの実行も行うのが普通のやりかたなのでしょうか? あまりよくわからずにネットだけの情報をたよりにプログラミングをしているので設計の仕方など分からないことが多々あります。 どなたかCGIに詳しい方ご返答おねがいします。

    • ベストアンサー
    • CGI
  • Perl(cgi)でこれはできますか?

    今まで、デスクトップ上にあるJAVAのプログラムで、 http://***.ne.jp を解析して、その中から、ある値を含む条件のURLのみを抜き出してHTMLリンク集を作っていました。 この作業を、ウェブベース(sakura.ne.jpのライトプランで利用予定。使用可能言語は多分perlのcgiのみ)で行うことはできないものかと思っております。 具体的には、 インプットボックスに、解析したいURLを入れて、検索ボタンを押すと、そのURLの文章の中から必要な文章のみを抜き出してそれと、HTMLリンク集にして返すというプログラムです。 また、perlやcgiは今まで殆ど触ったことが無い言語なので、どんなことでも、参考になりそうなことがありましたら是非是非、ご紹介ください。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • perlのcgiが動かない・・・

    cgiを組もうと思い、まずは簡単なもので試そうと思ったのですが、 うまくいかず困っています。 ↓プログラムは、こんな感じです。 ファイル名:index.cgi #!/usr/bin/perl print "<html>"; print "<body>"; print "abc"; print "</body>"; print "</html>"; <やってみたこと> ・Perlのパス「#!/usr/bin/perl」 が間違っていないか? which perl で /usr/bin/perl とでます。 ・Apache の設定が正しく行なわれているか? http://localhost でindex.htmlがきちんと表示できています。 ・「hello.cgi」 の設置場所を間違っていないか? プログラムソースが出るということは、 間違っていないのではないでしょうか? ・ためしに実行してみた TELNETで ./index.cgi <html><body>abc</body></html> とでてきました。 これはちゃんと動いているのでは?? 何か勘違いしていますか? お気づきの点を教えてください。よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • CGIについて

    会社から以下のようなcgiを作ってくれと言われましたが、初心者の為皆目見当つかない状態です perl,c,c++のうちなんでもいいそうですが、perlが入っているので、それを使おうかと思っています。 <図書管理サイト(CGIプログラム)要求仕様> rental.cgi 1.登録社員がアクセス、セレクトボックスから自分を選択し、パスワードを入力。  (パスワードは当面、社員番号と同じでよいと思われる) 2.認証に成功すると図書リスト画面が出る。図書リスト画面は、  「図書テーブル」の内容がリスト表示される。表示は「登録日が新しい順」。  本が増えることを想定すると、図書名による「検索」ができるとなおよい。 3.「貸し出し中ではない」本は、「借りる」といるリンクがつく。「借りる」を  クリックすると、JavaScriptによるアラートで「本XXXXを借りますか?」と出す。  OKがクリックされたら、貸し出し登録。  データベースの更新等貸し出し処理が無事終了したら  該当の本を「貸し出し中」とし、図書リストを更新表示。  なお、この時プログラム内部で「履歴テーブル」にデータを追加しておくこと。 4.図書リスト画面において、該当社員が借りている本の場合は「借りる」ではなく  「返却する」リンクとなる。  クリックすると、JavaScriptによるアラートで「本XXXXを返却しますか?」と出す。  OKがクリックされたら、図書返却登録。3.と逆のステップになる。  データベースの更新等返却処理が無事終了したら  該当の本を「貸し出し中」では無くし、図書リストを更新表示。  なお、この時成功画面に「本は棚に忘れず返却してください」などと出す。 データベースの方はpostgreSQLで下のような感じで作ってあります。 データベース名…bookmanagement bookmanagement=# CREATE TABLE books( bookid text, --本ID bookname text, --本名称 author text, --著者 explanation text, --説明 date date, --登録日 lending text, --貸出中? finallending text, --最終貸出日 lendinguserid text  --最終貸出ユーザID ); CREATE TABLE bookmanagement=# CREATE TABLE usertable( userID text, --ユーザID(社員番号) name text, --ユーザ名 pass text, --パスワード post text --所属部署 ); bookmanagement=# CREATE TABLE logtable( logID text, --<履歴ID><ユーザーID> date timestamp,<発生日時(=貸出日時)> bookid text,<本ID> userID text --<ユーザーID> );

    • 締切済み
    • CGI
  • cgiの引数が使えないです

    初めて質問します。 わかりにくく質問していたら申し訳ございません。 http://www.t-okada.com/shu1_note/shu1_note/21_11_log.html こちらのデータベースのプログラムをお借りしているのですが、 検索の引数をアドレスバーに直接入力すると、管理者ログイン画面となり、 参照することができません。 このような場合、どういうことが原因となっているか アドバイスしていただければ幸いです。 また、解決策がありましたらご教授ください。 よろしくお願いします。

    • 締切済み
    • CGI
  • CGI/Perlでこんなことできますか?

    初めて質問します。 プログラミング初心者なので、トンチンカンなこと言ってるかもしれませんが、ご教授願います。 自分で作ったHPで、他のサイトのWWWの一部を取り込み、表示したいのです。 具体例を挙げます。 自分のHPのフォームに入力したデータをgoogleなどで検索させ、その結果の一部を自分のHPに表示させたいのです。 もし、出来るのならどのようなコマンドが必要でしょうか? CGI/Perlではできないのでしょうか? 2週間以上悩んでます。どなたか、教えてください!!

    • ベストアンサー
    • CGI
  • Link Grammerの結果をPerlに組み込む方法

    LinkGrammer(http://www.link.cs.cmu.edu/link/)をPerlのプログラムに組み込む方法を教えてください。 例えば、Perlで作成したCGIに英文を入力すると、LinkGrammerの実行結果が表示されるなどのプログラムを作ろうとするにはどうすればよいのでしょうか? 教えてください、よろしくお願いします。

  • perl cgi, パスワード可能なレンタルサーバ

    従来ジオシティーズでperl CGIを作っていました。 しかしジオシティーズではパスワードによるアクセス制限ができないことがわかりました。 パスワード管理(たとえば.htaccessなどによる)が可能でperl cgiが動くレンタルサーバはないでしょうか? 絶対条件としては、サーバに作成したデータベースの所有権がユーザ側にあることや、サーバとしての信頼性です。ですので、無料サーバよりむしろ有料であって、サーバのダウンが極力なくセキュリティーもしっかりしているところの方がよいです。 なんらかのSQLデータベースもCGIから使えれば好ましいです。 そういったレンタルサーバをご紹介ください。

    • ベストアンサー
    • CGI
  • CGIのデーターベース検索について

    CGI初心者です。大変困っておりますので どなたか助けていただきたいのですが… 会社よりデータベースの検索CGIを作るよう言われました。 作りたいのは以下の内容です。 idを入力する部分がある(htmlのフォーム) ↓ その入力の番号を元に検索し該当者を検索する。 ↓ htmlで結果を出す。 と言うものです。 ただしidが40000件程あり どのようなデーターベース処理をすれば いいか困っています。(その内容のCSVはあります。) もしかしたらPHPのほうがいいのかもと思ってしまいます。 どなたかスクリプトやCSVの置き方などご指導いただけると大変ありがたいです。お手数をおかけしますがよろしくお願いいたします。

  • perlでURLに引数を入れるで表示する方法

    現在以下のURLで正常に表示しています。 http://hoge.jp/i.cgi?id=a これを http://hoge.jp/i.cgi?a で表示させたいと思うのですが、ウエブで調べましたら「METHOD=GETで渡す」方法が現在のやり方 で「コマンドライン引数で渡す」方法に変えたいのですが、perlの記述がいまいちわからず迷ってます。 プログラムはファイルを読み込んで if ("$idno" eq "$id") のこの$idの条件式でヒットさせているものになります。 変数記述等アドバイスいただけますと助かります。 うまく説明できずすみません。 よろしくお願いいたします。

    • ベストアンサー
    • Perl

専門家に質問してみよう