ワンクリックで二つのCGIを操作可能?

このQ&Aのポイント
  • ワンクリックで二つのCGIを操作可能?
  • ID/PASS発行CGIと住所等の個人データ取得mailform(CGI)を一つのフォームにまとめたい
  • 認証用PASS発行scriptでは名前や住所などのデータを取得できないため、一つのフォームでpass発行とそれ以外のデータ送信をしたい
回答を見る
  • ベストアンサー

ワンクリックで二つのCGIを操作可能?

ややこしいのですが、以下のような内容です。 1)ID/PASS発行CGI 2)その他住所等の個人データ取得mailform(CGI) …という二つの目的のためのscriptがあるとします。 これらをあたかも一つのformであるかのようにしたいのです。 ---------1)----2) ID-------○ Pass-----○ e-mail----○======○--------共通項目 Name------------○ Add--------------○ Tel--------------○ =================================== 今使っている認証用PASS発行scriptでは名前や住所などの データを取得できません。 そこで(見た目は)一つのformで、 pass発行と管理人にはその他データを送信するという ことをしたいのです。 別のページを作りそれぞれ入力させても良いのですが、 やはり一度の操作でそれぞれ必要なデータを取ることが 出きればと思うのです。 上の例ですと認証scriptにはID・PASS・e-mailを送り、 formではe-mail・name・add・telを管理人に送ります。 もしくはID/PASSと名前などのデータも同時に登録・管理、そして出きれば登録者自身が変更できるようなscriptをご存じ無いでしょうか? ※意味不明ならば補足します。

  • CGI
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • onosuke
  • ベストアンサー率67% (310/456)
回答No.1

2つのCGIを「同時」ではなく「順繰り」に呼び出すのではだめですか? Redirectで次のCGIに受け渡せばよいわけです。

impala
質問者

お礼

調べて順調にいきました。結局は最初から書いて解決というおそまつな結果です。(笑) どうもありがとうございました。

関連するQ&A

  • perl フォームの入力値のチェック セキュリティ

    フォームの入力値のチェック方法についての質問です。 名前、電話番号、Eメール、住所、注文商品、数量の入力フォームです。 入力値の取得は、ライブラリ「cgi-lib.cgi」を利用しています。 (以下perlのソース) #!/usr/bin/perl -T #入力値の取得 require 'cgi-lib.cgi'; &ReadParse(*form); $name = $form{'name'}; $tel = $form{'tel'}; $email = $form{'email'}; ・・・・以下同様の処理が続くだけなので省略 #サブルーチンを利用して入力値をチェック $name = &Wash($name); $tel = &Wash($tel); $email = &Wash($email); ・・・・以下同様の処理が続くだけなので省略 #サブルーチン部分 sub Wash{ if($_[0] =~ /^([^|><\/]+)$/){return $_[0];} elsif($_[0] eq undef){return "未入力";} else{return undef;} } (perlのソース ここまで) としてから、通常の処理に入るようにしてみたのですが セキュリティー上の問題があれば教えてください。 入力値から、コマンドやスクリプトが実行(XSS)されてしまう可能性はありますか? お願いします。 またメタ文字が見つかった場合の処理についてですが とりあえずよくわからないので。「undef」を返して いるのですが、他に良い方法があれば教えてください。

    • ベストアンサー
    • CGI
  • フォームに入力された内容で並び替えをする

    Perl初心者です。 現在、フォームに入力された内容で、テキストデータを並び替えて保存するスクリプトを作成しています。 name1,add1,tel1,mail1,comment1 改行↓ name2,add2,tel2,mail2,comment2 改行↓ 一行が上記の形式でCSV形式で保存されたデータがあります。 データの並び替えフォームで、データの並び順変更のテキストフォームを表示し、入力した数字順にソートをかけたいと考えております。 $FORM{'num1'}→name1の行 $FORM{'num2'}→name2の行 これで、$FORM{'num1'}に2、$FORM{'num2'}に1となっていた場合、保存されたデータは name2,add2,tel2,mail2,comment2 改行↓ name1,add1,tel1,mail1,comment1 改行↓ 上記のように、変更して保存したいと考えておりますが、ぜんぜんうまくいきません。 データの項目は、data6やdata7といった形で将来データ項目が後ろに増える可能性がありますので、それにも対応したいと考えていますが、データファイルの中に番号データを記録せずに、データの並び替えをすることは可能でしょうか? ご存じの方がおられましたらお教え下さい。 宜しく御願い致します<(_ _)>

    • ベストアンサー
    • Perl
  • phpでmysqlに接続してテーブルのデータを抽出

    テーブルのデータを抽出したいのですけど テーブルに idと対応するpassワードがあったとすると 入力フォームみたいのを作って 認証したいidとpassワードを入力してもらって それをテーブルにあるのか確認したい場合どうしたらいいでしょうか? 入力フォームはこうなっています <html> <head> <title>ユーザ認証</title> </head> <body> ユーザ認証<br> <form action="ninsyou.php" method="post" name="form1"> ユーザ名: <input name="id" type="text" id="fUserName"> <br> パスワード: <input name="pass" type="password" id="fPassWd"> <input type="submit" name="Submit" value="認証"> <input type="reset" name="Submit2" value="クリア"> </form> </body> </html> わかりにくい質問ですみません。

    • ベストアンサー
    • MySQL
  • DBを用いたCGI認証スクリプト(perl、mysql)

    DBに一行一ユーザーの情報があり(メールアドレス 、パスワード)、 IDをメールアドレスとし、 入力したメールアドレスが登録されているか 入力したメールアドレスのパスワードがあっているか、 をチェックするスクリプトです。 初心者のためいろいろのサイトを見ながら作りましたが、下記のソースで何とか動いています。 が、これでよいのか(スマートかどうか)、もっと簡単な方法があるのかどうかをお聞きしたく、質問させていただきました。よろしくお願いいたします。 #!/usr/bin/perl use DBI; use CGI; require "cgi-lib.pl"; #フォームからIDとPWを受け取る &ReadParse(*form); $input_id= "$form{'アイディー'}"; $input_pw= "$form{'パスワード'}"; $TABLE_name = 'メールアドレス'; $form = CGI->new; $ret = eval{ $dbh = DBI->connect('DBI:*******************) }; if ( !$ret ) { print "接続エラーが発生しました\n"; exit(); } else{ print "OK\n"; $sql = "SELECT パスワード FROM $TABLE_name where メールアドレス='$input_id'"; $sth = $dbh->prepare($sql); if(!$sth->execute){ print "SQL実行エラー\n"; exit; } $num_rows = $sth->rows; if($num_rows==0){ print "このEmailは登録されていません。\n"; } else{ #ヒットしたemailの行にあるパスワード=$rec $rec = $sth->fetchrow_array(); #ヒットしたemailの行にある「パスワード=$rec」と入力したパスワードがマッチするかどうか if($rec eq $input_pw){ #認証OK!会員ページへ print "<br>認証OK!<br>"; } else{ #認証NG(Emailは登録されているが、登録したemailとパスワードが一致しない) print "パスワードが違います\n"; } } $sth->finish; $dbh->commit; $dbh->disconnect; }

    • ベストアンサー
    • Perl
  • パスワード認証がうまくできない

    パスワード認証がうまくできません ----------------------HTMLのフォームの部分---------------------- <form action="http://localhost/cgi-bin/access.pl" method="get"> <td><Div Align="right">ユーザID:</Div></td><td><input type="text" name="ID" size="25"></></td> </tr> <tr> <td>パスワード:</td><td><input type="password" name="PASS" vsize="25"></td> </tr> </table> <input type="submit" value=" ログイン "> ----------------------Perlの認証の部分の内容-------------------- sub ninshou { my $Data=$ENV{'QUERY_STRING'}; my $CheckIDPASS; my $CheckFinish=0; open(IMPUT,"<","ID-PASS.txt"); while(<IMPUT>){ $CheckIDPASS=$_; if($CheckIDPASS eq $Data){ $CheckFinish=1; } } if($CheckFinish==1){ print "認証しました<br>\n"; } else{ print"パスワードが正しくありません<br>"; } ------------------------ID-PASS.txtの内容---------------------- ID=TARO&PASS=0000 ID=JIRO&PASS=1111 ID=SABURO&PASS=2222 --------------各ソースここまで----------------- HTMLのフォームにIDとPASSを入力して療法が正しければ先に進める CGI(Perl)を作ってるんですが、なぜかID-PASS.txtの一番下に 記入しているID=SABURO&PASS=2222 ID SABURO PASS 2222 以外で認証することができません。SABURO / 2222 と入力 したときのみうまく認証できます。 他のID/PASSで認証できないのはなぜでしょうか?

    • ベストアンサー
    • Perl
  • phpで作成した携帯サイトのメールフォームがPCからは正常に送信されるのに、携帯から送信すると届きません。

    ソースindex <form action="kakunin.php" method="POST" > お名前 <input name="name" id="name" type="text"> フリガナ<input name="furi" id="furi" type="text"> ご住所<input name="add" id="add" type="text"> TEL<input name="tel" id="tel" type="text"> FAX<input type="text" name="fax"> E-MAIL <input name="mail" id="mail" size="30" type="text"> お勤め先名 <input name="k_name" id="k_name" type="text"> 勤続年数<input type="text" name="nensu"> 年収<input type="text" name="nenshu"> ご要望、ご質問等<textarea rows="5" cols="10" name="yobo"></textarea> <input type="submit" value="送信する"> </form> ---------------確認画面----------------------- <?php $name =$_POST[name]; $furi =$_POST[furi]; $add =$_POST[add]; $tel =$_POST[tel]; $fax =$_POST[fax]; $mail =$_POST[mail]; $k_name =$_POST[k_name]; $nensu =$_POST[nensu]; $nenshu =$_POST[nenshu]; $yobo =$_POST[yobo]; if($name == ""){ $err_massage .= "お名前を入力してください。"; } if($furi == ""){ $err_massage .= "フリガナを入力してください。"; } if($tel == ""){ $err_massage .= "TELを入力してください。"; } if($mail == ""){ $err_massage .= "E-MAILを入力してください。<br />"; }else{ if(ereg("([0-9a-zA-Z._-]{1,})@([0-9a-zA-Z.-_]{1,})",$mail)){ }else{ $err_massage .= "E-MAILを正しく入力してください。"; } } if($err_massage != ""){ print <<<ERR $err_massage <a href="index.html">戻る</a> ERR; }else{ print <<<FORM <form action="sosin.php" method="post"> お名前 $name フリガナ $furi ご住所 $add TEL(携帯可) $tel FAX $fax E-MAIL $mail お勤め先名 $k_name 勤続年数 $nensu 年収 $nenshu ご要望、ご質問等 $yobo <input name="name" value="$name" type="hidden"> <input name="furi" value="$furi" type="hidden"> <input name="add" value="$add" type="hidden"> <input name="tel" value="$tel" type="hidden"> <input name="fax" value="$fax" type="hidden"> <input name="mail" value="$mail" type="hidden"> <input name="k_name" value="$k_name" type="hidden"> <input name="nensu" value="$nensu" type="hidden"> <input name="nenshu" value="$nenshu" type="hidden"> <input name="yobo" value="$yobo" type="hidden"> <input type="submit" value="送信する"> </form> FORM; } ?> -送信画面- <?php $name =$_POST[name]; $furi =$_POST[furi]; $add =$_POST[add]; $tel =$_POST[tel]; $fax =$_POST[fax]; $mail =$_POST[mail]; $k_name =$_POST[k_name]; $nensu =$_POST[nensu]; $nenshu =$_POST[nenshu]; $yobo =$_POST[yobo]; mb_language("Ja") ; mb_internal_encoding("shift-JIS") ; $from_mail = '送信メールアドレス'; $msg = "【タイトル】 "."お名前:"."$name"." フリガナ:"."$furi"." 住所:"."$add"." TEL:"."$tel"." FAX:"."$fax"." E-MAIL:"."$mail"." お勤め先名:"."$k_name"." 種類:"."$shurui"." 勤続年数:"."$nensu"." 年収:"."$nenshu"." お問合せ内容:"."$naiyo_out"." ご要望・ご質問等他:"."$yobo"; $sb = "【タイトル】"; $rcd = mb_send_mail($from_mail, $sb, $msg, "From:$mail"); ?>

    • 締切済み
    • PHP
  • ユーザー認証が必要な投票ができるCGIを探しています。

    ユーザー認証が必要で、一人一票投票が出来る いわゆるインターネット投票ができるCGIスクリプトを探しています。 できればどれに投票したか管理者にも分からないようなものがいいのですがそこまで厳密でなくても構いません。 イメージとしては IDで入室し、一票のみ投稿が出来ます。 過去に投稿記録があれば受付済みにし投票不可になります。 投稿されたデータは例えばシャッフルされて蓄積されるなど誰がどれに入れたかを解析できないような取得ができれば理想通りです。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • CGI
  • cgiでのユーザーIDとパスワードの認証

    パスワードの確認しかないcgiにユーザーIDの認証も追加したいのですが、どのように変更すれば良いのかわかりません。皆さんのアドバイスよろしくお願いします。 ※ユーザーID $text = 'test' # パスワードの確認 if ($formdata{'pass'} eq $password or $cookies{'pass'} eq $password) { $access = $upload = $delete = 1; $cookie = "Set-cookie: pass=$password\n"; } elsif ($formdata{'pass'} or $cookies{'pass'}) { $form_log .= "パスワードが正しくありません。<br>"; }

  • 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>

  • サブウィンドウに値を渡して、CGIにPOSTしたい

    お世話になります。 javascript初心者です。 題名のようにPOSTした値をポップアップで確認して、CGIに渡そうとしています。 親ウィンドウのoya.htmは、 <html> <head><title>submitの確認をポップアップで確認</title> <script type="text/javascript"> <!-- function fnWinOpen() { window.open("pop_post.htm", "win", "width=150,height=20"); } //--> </script> </head> <body> <form name="Form_name"> <input type="text" name="Data" /> <input type="button" value="送信" onClick="fnWinOpen()"> </form> </body> </html> でして、 サブウィンドウのpop_post.htmは、 <html> <head><title>submitの確認をポップアップで確認</title> <script type="text/javascript"> <!-- function fnStart() { document.getElementById("SubData").value = window.opener.Form_name.Data.value; } function job( url ) { 後はこの関数を完成さればと考えている } //--> </script> </head> <body onload="fnStart()"> <form method="post" > <input type="text" id="SubData" /> <input type="button" name="sub" value="送信job" onClick="job('thanks.cgi')"> </form> </body> </html> とやっています。 サブウィンドウに値を表示させることはできました。 後は、サブウィンドウの方の job関数で、submitするにはどうすればようのでしょう? 最後に値が渡されるCGI、thanks.cgiでは、そのデータを登録させ、「ありがとうございました」を表示させるものです。 また、そもそもこの方向でうまくできますか? よろしくお願いします。