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