Code.006 2002年11月19日発行 ■━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━■ 【 Webプログラミング 】 〜 猫的プログラマーとその軌跡 〜 ■━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━■ ▼毎週月曜日に配信しています。 ▼等幅フォントでご覧いただくとキレイに見えます。 ▼登録・解除はこちらから可能です。 < http://www.ichikoro.com/webp/ > ※ぜひお友達にもご紹介ください(^^)/ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ CGI(Perl)基本動作 その6:「モジュールを使う」 ────────────────────────────────────── すみません、配信が遅れてしまいました(平謝) というわけで今回は本当にサンプルの紹介だけです。 詳細な解説は来週掲載しますので、平にご容赦を( ^.^)( -.-)( _ _) ってな感じですので、今回はCode.004でご紹介したソースを 書き換えてみたいと思います。HTMLは同じですが、CGIが大き く変わっています。 ・Code.004「URLエンコード・デコード」 http://backno.mag2.com/reader/BackBody?id=200210280500000000080329000 ─────── ソース1(HTML) ─────── <HTML> <HEAD> <TITLE>クエリー表示</TITLE> </HEAD> <BODY bgcolor="#FFFFFF"> <H2>クエリー表示</H2> <FORM action="printquery2.cgi" method="POST"> 氏名:<INPUT type="text" name="namae"><BR> 年令:<INPUT type="text" name="age" size="10">歳<BR> 性別:<INPUT type="radio" name="sex" value="man">男性 <INPUT type="radio" name="sex" value="woman">女性<BR> 居住地域:<SELECT name="area"> <option value="1">北海道 <option value="2">東北 <option value="3">関東 <option value="4">東海 <option value="5">北陸 <option value="6">関西 <option value="7">中国 <option value="8">四国 <option value="9">九州・沖縄 <option value="99">その他 </SELECT><BR> 好きな食べ物: <INPUT type="checkbox" name="koubutsu" value="ichigo">いちご <INPUT type="checkbox" name="koubutsu" value="mikan">みかん <INPUT type="checkbox" name="koubutsu" value="ringo">りんご <INPUT type="checkbox" name="koubutsu" value="banana">ばなな<BR> <BR> 何か一言:<BR> <TEXTAREA rows="5" cols="50" name="word"></TEXTAREA><BR> <BR> <BR> <INPUT type="submit"> </FORM> <HR> <DIV align="right"><SMALL><I>Webプログラミング</I></SMALL></DIV> </BODY> </HTML> ─────── ソース1(CGI) ─────── #!/usr/bin/perl ;# ;#渡されたクエリーを表示する(printquery2.cgi) ;# #----------------------------------------------------------------------# # モジュール # #----------------------------------------------------------------------# use strict; #コーディングの厳格化 use CGI qw(:standard); #CGIモジュール #======================================================================# # メインルーチン # #======================================================================# package main; { my $q = new CGI(); my @qname; my $name; #--------------------------------------------------# # 全クエリー名の取得 # #--------------------------------------------------# @qname = $q->param(); #--------------------------------------------------# # ヘッダ表示 # #--------------------------------------------------# $|=1; print $q->header("text/html"), #デフォルトが "text/html" のため書かなくても良い $q->start_html( -title => "printQuery2", -BGCOLOR => "#FFFFFF" ), $q->h2( {-align => "center"}, "printQuery2"); print qq{<DIV align="center">\n}, qq{<TABLE border="1">\n}; #--------------------------------------------------# # 値を表示 # #--------------------------------------------------# foreach $name (@qname){ printf( qq{<TR><TD align="right">%s</TD><TD>%s</TD></TR>\n} , $name , $q->param($name) ); } #--------------------------------------------------# # フッタ表示 # #--------------------------------------------------# print <<"END_OF_HTML"; </TABLE> </DIV> <HR> <DIV align="right"><SMALL><I>Webプログラミング</I></SMALL></DIV> END_OF_HTML print $q->end_html(); #--------------------------------------------------# # 正常終了 # #--------------------------------------------------# exit(0); } __END__ ─────── 実行方法 ─────── テキストエディタ(メモ帳やSimpleText)などで上記のソース(プログラム)を 保存してください。ソース1は適当な名前(xxxx.html)でOKです。ソース2は 「printquery2.cgi」とすると、HTMLを変更せずにすみます。 CGIの詳しい実行方法については、Code.001をご参照ください。 http://backno.mag2.com/reader/BackBody?id=200210050820000000080329000 ★重要! このCGIはセキュリティーホールを含みます。 学習以外の用途には使用しないでください。 ─────── 解 説 ─────── 上記のサンプルだと少々複雑ですので、もう少し簡潔に 書いてみましょう。 #!/usr/bin/perl ;# ;#特定のクエリーを表示する ;# use CGI qw(:standard); #CGIモジュール #-- オブジェクト作成 --# $q = new CGI(); #-- 値取得 --# $value = $q->param("age"); #クエリー名"age"の値を取得 #-- 表示 --# print $q->header(); #print "Content-type: text/html\n\n"; print $value; exit(0); 上記のCGIにクエリー"age"を渡してみてください。 このサンプルで大体のイメージはつかんでいただけるでしょうか? ─────── 次回予告 ─────── 時間の関係で、説明がおざなりになってしまいました(^^; 次回はもう一個別のサンプルをご紹介するとともに、 詳しく解説をしたいと思います。 ─────── 分からない ─────── いまいちよく分からない場合は、以下へれっつらごー。 ・サポートBBS このメルマガ専用のサポート掲示板 http://www.ichikoro.com/webp/bbs/ ・CGIプログラミングML CGIなどWebに関する話題を繰り広げるメーリングリスト このメルマガとは何の関係もありませんので発言時は注意を。 http://www.ichikoro.com/cgi/ml/ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 編 集 後 記 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ う〜ん、ここしばらく色んな書類に追われています(^^; というわけで配信が後倒しになってしまいました。 詳しい状況などはまた来週にこの場所で。 心苦しいぞ〜。 という状況にも関わらず、日曜日にゲームボーイアドバンス買っちゃいました(笑) もうお店で見たときから我慢できず、ここ数日はファイアーエムブレム漬けです。 中学生くらいのころ、ゲーム事態の面白さはもちろん世界観にもやられてしまって いたのを思い出し、あまりの懐かしさに泣けてきました(^^ゞ ・ファイアーエムブレム 〜封印の剣〜 http://www.nintendo.co.jp/n08/afej/ ♪ふぁいあーえむぶれむ、手強いシミュレーション〜 昔やり込んでいたスーファミ版(紋章の謎)とは登場人物も世界も、もちろんスト ーリーも違うんですが、システムは正しい方向に進化しているしチョコッと難し目 の所もそのまま。世界観も気に入りました。 聖戦の系譜(続編)がダメダメだったというのもあるんでしょうが(^^; そうそう、ダメダメといえばファミコン版の外伝がちょっとキモ.....。 と、最近ここまで熱く語れるゲームにお目にかかれてないなぁ、というか 最近全くやってなかったからか?(^^;とりあえず週末に給料が入ったら今 度は「逆転裁判」の予定です(笑) それでは、また来週お会いしましょう (^-^)/~~ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 【 Webプログラミング Code Sample 】 発 行 : ichikoro.com 発行責任者 : 勝部 麻季人 < katsube@ichikoro.com > Webサイト : < http://www.ichikoro.com/webp/ > お問い合わせ先 : < mm-webp@ichikoro.com > Powerd by まぐまぐ All Right Reserved, CopyRight(C) 2001 Webプログラミング Code Sample ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■