• 締切済み

mail.cgiの記述について

メールフォームの確認画面を表示すると、 件名、名前、お問い合わせ、メールは表示されるのですが、 生年月日、資料、担当者が、入力しても表示されません。 mail.cgiには printf "<li><b>生年月日</b>: %s </li>\n", $day; printf "<input type = \"hidden\" name = \"day\" value = \"%s\">\n", $day; printf "<li><b>資料</b>: %s </li>\n", $book; printf "<input type = \"hidden\" name = \"book\" value = \"%s\">\n", $book; printf "<li><b>担当者</b>: %s </li>\n", $name2; printf "<input type = \"hidden\" name = \"name2\" value = \"%s\">\n", $name2; とそれぞれ書いています。 例えば、担当者はtantousyaで、資料はsyryouとするべきでしょうか。 この3つ以外は表示されるので書き方が違うのかと思うのですが…

noname#63491
noname#63491
  • CGI
  • 回答数1
  • ありがとう数3

みんなの回答

回答No.1

$day = '昭和54年6月3日 '; $book = '平成20年度業務部資料20-1 '; $name2 = '山田海雄 '; printf "<li><b>生年月日</b>: %s </li>\n", $day; 以下略 とすると当たり前ですが何の問題も無く表示されます。 要するに$day等に値が代入されていないということですが FORMから受け取ったデータをデコードしたときに そもそも入っていないのか? 或いは変数名が違うのか? コマンドラインで $ perl -wc mail.cgi として1回しか出てこない変数があれば 例えば $test なら Name "main::test" used only once: possible typo at env.cgi line 29. みたいに表示されますがねえ あと 参考にもならないかもしれない最低なサンプルですが メールフォームの確認画面について http://oshiete1.goo.ne.jp/qa4066141.html に載せています

noname#63491
質問者

お礼

詳しい回答を有難うございました。 リンクのページも参考にさせて頂きます。

関連するQ&A

  • CGIでラジオボタンの選択結果を保持する

    http://okwave.jp/qa/q8211303.html 上記質問の続きです。 Q1,Q2,Q3・・・と質問をいくつか用意し、 それぞれで選択したラジオボタンによって、最終ページに表示させる回答を変えたいです。 ひとつ前のページで選択したものを次ページに反映させることはなんとかできたのですが 何ページも前に選択した回答を、最終ページに反映させる方法がわかりません。 <input type="hidden"を使うところまでは教えていただいたのですが 具体的にどうしていいかわかりません。 参考サイト等ありましたら教えていただけますでしょうか。 よろしくお願いいたします! ちなみに作成方法は以下のような感じです。 【Q1】 <form name="q1" action="com.cgi" method="POST"> <input type="hidden" name="stage" value="q1" /> <ol> <li><input type="radio" name="q11" value="q11_a"> 犬がすき</li> <li><input type="radio" name="q11" value="q11_b"> 猫がすき</li> <li><input type="radio" name="q11" value="q11_c"> うさぎがすき</li> </ol> <ol> <li><input type="radio" name="q12" value="q12_a"> 右利き</li> <li><input type="radio" name="q12" value="q12_b"> 左利き</li> </ol> <input type="submit" value="次へ" /> 【Q2】 <form name="q2" action="com.cgi" method="POST"> <input type="hidden" name="stage" value="q2" /> <ol> <li><input type="radio" name="q21" value="q21_a"> 海がすき</li> <li><input type="radio" name="q21" value="q21_b"> 山がすき</li> <li><input type="radio" name="q21" value="q21_c"> 散歩がすき</li> </ol> <input type="submit" value="次へ" /> 【Q3】 <form name="q3" action="com.cgi" method="POST"> <input type="hidden" name="stage" value="q3" /> <ol> <li><input type="radio" name="q31" value="q31_a"> 男性</li> <li><input type="radio" name="q31" value="q31_b"> 女性</li> </ol> <ol> <li><input type="radio" name="q32" value="q32_a"> 既婚</li> <li><input type="radio" name="q32" value="q32_b"> 未婚</li> </ol> <input type="submit" value="判定" /> 【最終ページ】 「あなたは犬がすきで右利きですね」 「あなたは海がすきですね」 「あなたは女性で既婚ですね」 と表示させたいです。 実際には、Q1→Q2→Q3と順番にページが飛ぶのではなく、 この答えだったら次はこのページ、それ以外は別のページ、 といった感じで、様々なページに飛びます。 以下のような感じで条件分岐を書いています。 if ($stage eq "q1") { if ($q11 eq "q11_a") { Q2(); } elsif ($q11 eq "q11_c") { ・・・; } elsif ($q12 eq "q12_b") { Q3(); } else { ・・・; } } よろしくお願いいたします!

    • ベストアンサー
    • CGI
  • CGIプログラムでのボタン表示のさせかた

    print "<form action=\"$script\" method=\"POST\" target=\"_blank\">\n"; print "<input type=hidden name=mode value=note>\n"; print "<input type=hidden name=job value=blank>\n"; print "<input type=submit value="説明表'>"</form>\n"; print "<form action=\"$home\" method=\"POST\" target=\"_blank\">\n"; print "<input type=hidden name=mode value=_top>\n"; print "<input type=hidden name=job value=blank>\n"; print "<input type=submit value='トップ'></form>\n"; というCGIプログラムの文章があるのですが、 上記の記述で実行すると、 「説明表」ボタンと、「トップ」ボタンが縦に並んで表示されてしまいます。 これを、横に表示させるようにするには、 どのように変更すばいいのでしょうか? 参考になるかわかりませんが、「説明表」をクリックして表示される文章は、 他のCGIプログラムの中に記述されています。

    • ベストアンサー
    • CGI
  • CGIで送受信するプログラムの作り方

    入力フォームを返すのとフォームからのPOSTとGETを受け取って処理する、 同一のスクリプトを、CGI、C言語で作成致しましたが、 上手く動作していません。(白紙のページが表示されるだけでした。) getenv("REQUEST_METHOD");がNULLだった場合に本来表示されるハズのページが表示されるはずで、これが出ないという事は、getenv("REQUEST_METHOD");がNULLでなく、うまく動作していないのでは? こう考え、getenv("REQUEST_METHOD");の中身を表示させた所、GET と表示されました。 何も送信していないのに、GETと判断されているのは何故でしょうか? また、正しい動作をするプログラムをご提示頂けますと助かります。 /* form2.c */ #include <stdio.h> #include <stdlib.h> int main(void) { int len; char *clen; char *data,*method,*qs; printf("Content-type: text/html\n\n"); printf("<html><head></head><body>\n"); method = getenv("REQUEST_METHOD"); printf("%s\n", method); if(method == NULL){ printf("Content-type: text/html\n\n"); printf("<html>\n"); printf("<head>\n"); printf("<title>form test page</title>\n"); printf("</head>\n"); printf("<body>\n"); printf("<form method=\"post\" action=\"form2.cgi\">\n"); printf("<input type=\"text\" name=\"fieldname\" size=\"40\"><br>\n"); printf("<input type=\"text\" name=\"fieldname2\" size=\"40\"><br>\n"); printf("<input type=\"text\" name=\"fieldname3\" size=\"50\"><br>\n"); printf("<input type=\"submit\" value=\"書き込み\">\n"); printf("</form>\n"); printf("<form method=\"get\" action=\"form2.cgi\">\n"); printf("<input type=\"text\" name=\"fieldname\" size=\"40\"><br>\n"); printf("<input type=\"text\" name=\"fieldname2\" size=\"40\"><br>\n"); printf("<input type=\"text\" name=\"fieldname3\" size=\"50\"><br>\n"); printf("<input type=\"submit\" value=\"書き込み\">\n"); printf("</form>\n"); printf("</body>\n"); printf("</html>\n"); exit(0); } //POST else if(!strcmp(method, "POST")){ clen = getenv("CONTENT_LENGTH"); if(clen == NULL){ exit(0); } len = atol(clen); data = malloc(len+1); scanf("%s",data); data[len] = '\0'; printf("Content-type: text/html\n\n"); printf("<html><head></head><body>\n"); printf("%s<br>\n", data); printf("</body></html>\n"); } //GET else if(!strcmp(method, "GET")){ qs = getenv("QUERY_STRING"); printf("Content-type: text/html\n\n"); printf("<html><head></head><body>\n"); printf("%s<br>\n", qs); printf("</body></html>\n"); } printf("</body></html>\n"); } 宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • チェックボックス(CGI)のズレをなくすにはどうすればよいでしょうか?

    現在メールフォームを勉強中です。チェックボックスの項目を1つだけ設定していますが、チェックを外せば下の項目が上に一段ズレて送信されてきます。 チェックが外されていてもその項目だけ“空白”もしくは“チェックなし”とかに出来ますでしょうか?お手数ですが、ご教授ください。 【html側】 <form method="POST" action="mail.cgi"> <input type="text" name="01"> <input name="checkbox" type="checkbox" value="on"> <input type="text" name="02"> <input type="text" name="03"> <input type="submit" value="確認画面"> </form> 【cgi側】 $form0 = "01"; $form1 = "チェック"; $form2 = "02"; $form2 = "03"; if($form0 eq ""){ $form_input0 = ""; } else { $form_input0 = "<p class=\"text\">$form0 = $VALUE_DATE[0]</p>";} if($form1 eq ""){ $form_input1 = ""; } else { $form_input1 = "<p class=\"text\">$form1 = $VALUE_DATE[1]</p>";} if($form2 eq ""){ $form_input2 = ""; } else { $form_input2 = "<p class=\"text\">$form2 = $VALUE_DATE[2]</p>";} if($form3 eq ""){ $form_input3 = ""; } else { $form_input3 = "<p class=\"text\">$form3 = $VALUE_DATE[3]</p>";} <FORM method="post" action="mail.cgi"> <INPUT type="hidden" name="$form0" value="$VALUE_DATE[0]"> <INPUT type="hidden" name="$form1" value="$VALUE_DATE[1]"> <INPUT type="hidden" name="$form2" value="$VALUE_DATE[2]"> <INPUT type="hidden" name="$form3" value="$VALUE_DATE[3]"> <INPUT type="submit" value="この内容で送信する"></FORM> $mbody .= "\n"; $mbody .= "フォームより以下の内容が送信されました。\n"; $mbody .= "\n"; $mbody .= "=============================================================\n"; $mbody .= "\n"; $mbody .= "・$form0:$VALUE_DATE[0]\n"; $mbody .= "\n"; $mbody .= "・$form1:$VALUE_DATE[1]\n"; $mbody .= "\n"; $mbody .= "・$form2:$VALUE_DATE[2]\n"; $mbody .= "\n"; $mbody .= "・$form3:$VALUE_DATE[3]\n"; $mbody .= "=============================================================\n"; $mbody .= "\n"; ソースは文字制限の関係で省略しています。解りにくいですが、宜しくお願いします。

    • 締切済み
    • CGI
  • ラジオボタンについて

    ラジオボタンのnameにそれぞれ違う名前をつけても 選択の制限を1つだけにできるやり方はありませんか? 例 <input type="hidden" name="a1" value="0151" /> <input name="a" type="radio" value="1" /> <input type="hidden" name="b1" value="0152" /> <input name="b" type="radio" value="1" /> <input type="hidden" name="c1" value="0153" /> <input name="c" type="radio" value="1" /> 私がやりたいことはあるプログラムシステムで使用するため ラジオボタンの上にhiddenでそれぞれ指定してるため このような形で表示できないかと、おもっています。

    • ベストアンサー
    • HTML
  • C言語CGIについての質問

    C言語 #include <stdio.h> main() { int chr; int flag; printf("Content-type: text/html\n\n"); printf("<HTML><BODY>\n"); printf("name.cgi<BR>\n"); flag = 0; while( flag == 0 ) { /* 渡されたデータを標準入力より取得する */ chr = getchar(); /* 渡されたデータをそのまま表示する */ putchar(chr); /* データ終了のチェック */ if( (chr == EOF) || (chr == 0x00) || (chr == '\n') ) { flag = 1; } } printf("</BODY></HTML>\n"); HTML <HTML> <BODY> <FORM METHOD="POST" ACTION="./name.cgi"> <INPUT TYPE="TEXT" NAME="Name" value="HogeHoge"> <INPUT TYPR="TEXT" NAME="ADDRESS" value="BarBar"> <INPUT TYPE="submit" VALUE="送信"> </BODY> </HTML> ただ送信するだけでなく受け取り手の人がゴミ箱と受信ボックスとで選択できるようにしたいです またその日の日日も表示できるようにしたいです どなたかご教授ください

  • CGIの組み方が解りません

    会社のHP制作しているのですが、 見積もりフォーム作ろうと思っています。 <FORM action=http://●●●.jp/●●●cgi method=POST >←良く解りません <INPUT type="hidden" name="mailto" value="●●●@●●●.jp"> <INPUT type="hidden" name="subject" value="見積もり依頼"> <INPUT type="hidden" name="location" value="formend.html"> どこかのサイトを拝見してこのような感じで行ったのですが、 最初のform actionが良く解りません。 そもそもCGIをどのようにつくり設置するのか根本的なことが良く解りません。 何処か解り易く説明しているcgiの組み方、メールフォームの作り方などがあれば教えてください。

  • サイト内検索のタグ(CGI禁止の場合)でうまくいかない・・・(涙)

    cgiを使わないサイト検索機能をホームページにつけるため、 googleを使ったサイト内検索を行うタグをソースに入れたところ、うまく動作しません。 (仮に検索対象となる自分のホームページのドメインをwww.abc.ne.jpとします) <form action="http://www.google.co.jp/search" method="get"> <input type="hidden" name="as_dt" value="i"> <input type="hidden" name="as_epq" value="abc"> <input type="hidden" name="as_eq" value> <input type="hidden" name="as_occt" value="any"> <input type="hidden" name="as_oq" value> <input type="hidden" name="as_sitesearch" value="abc.ne.jp"> <input type="hidden" name="lr" value> <input type="hidden" name="num" value="10"> <input type="text" size="20" name="as_q"> <input type="submit" name="btnG" value="検索"> </form> http://www.abc.ne.jp/abcのサイト内を検索したいのですが、 この場合だとhttp://www.abc.ne.jp/のサイトも検索にかかってしまいました。 http://www.abc.ne.jp/abc内だけをサイト内検索するフォームタグはあるのでしょうか? 教えてください。よろしくお願いします。

    • ベストアンサー
    • HTML
  • CGI name= が同じではダメってでたんですが・・・

    ダウンロードCGIにて、設置してHTMLの文法テストをしたら 「name= が同じでは、CGI側ではそれらを区別できません。」 ってなったんですけど、動作は正常にするようなのですが、 調べても知識がないせいかどうしたら良いかちょっとわかりません・・・ hidden だから関係ない?と初心者考えですが、文法テストは正しいし でも不具合が心配なので、誰か教えて下さい <(_ _)> <input type="hidden" name="sw_aress" value=""> <input type="checkbox" name="sw_aress" value="1">レス数 <input type="hidden" name="sw_ref" value=""> <input type="checkbox" name="sw_ref" value="1">回数

    • ベストアンサー
    • CGI
  • リンク先のcgiが開かない

    お世話になります。 既存のcgiを改造しているのですが、リンク先のcgiが開かず、何のエラーもなく、元のページが再表示されてしまっています。何が原因なのでしょうか? ソース自体は改造前と見比べてみても(パラメータを追加した以外)なんら変わりはありません。 <FORM METHOD=POST ACTION="t02.cgi"> <INPUT TYPE=HIDDEN NAME=A VALUE="123"> <INPUT TYPE=HIDDEN NAME=MODE VALUE="111"> <INPUT TYPE=HIDDEN NAME=BU VALUE="DD"> <TD COLSPAN=6>&nbsp;&nbsp;<INPUT TYPE=SUBMIT VALUE="ダウンロード"></TD> </FORM> 上記のようなテキストをperlで組み立ててスキンにはめ込んで作っています。 よろしくお願いします。

    • 締切済み
    • CGI

専門家に質問してみよう