Common Gateway Interface +SSI j 164 INTERNET magazine 1996/3
INTERNET magazine 1996/3 165 Common Gateway Interface 5 2 3 1 2 3 4 1 4 j
Common Gateway Interface j j j j 166 INTERNET magazine 1996/3
INTERNET magazine 1996/3 167 Common Gateway Interface
Common Gateway Interface AddType application/x-httpdcgi.cgi 1 METHOD=POST METHOD=GET j 168 INTERNET magazine 1996/3
TEXT1=<TEXT1 &TEXT2=< TEXT2>" 2 <A HREF="foo.cgi?arg1=val1& arg2=val2"> 3 Common Gateway Interface <A HREF="foo.cgi?arg1=val1&arg2=val2"> INTERNET magazine 1996/3 169
Common Gateway Interface Content-type: Content-type: text/html Content-type: image/gif Location: Location: http://www.foo.bar/ Status: 1!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<TITLE> Sample 1</TITLE>\n"; print "<H1> Sample 1</H1>\n"; $d = `date`; print "$d\n"; 170 INTERNET magazine 1996/3
2 Common Gateway Interface <A IMG="sample2.cgi">!/usr/local/bin/perl print "Content-type: image/gif\n\n"; ($sec,$min,$hour,$mday,$mon,$year) = localtime(time); if ($hour < 6) { $img = 'midnight.gif'; } elsif ($hour < 9) { $img = 'morning.gif'; } elsif ($hour < 18) { $img = 'afternoon.gif'; } else { $img = 'night.gif'; } $image = `/bin/cat $img`; print "$image"; INTERNET magazine 1996/3 171
Common Gateway Interface <method> default /~foo/default.html circle /~foo/circle.html 268,56 290,102 rect /~foo/rectangle.html 111,7 211,104 poly /~foo/poligon.html 57,6 5,106 107,106 default URL circle rect poly point 172 INTERNET magazine 1996/3
<method><url>< 1>< 2>... <A HREF="map"> <IMG SRC="" ISMAP> </A> <A HREF="/cgi-bin/imagemap/ ~foo/click.map"> <IMG SRC="/~foo/click.gif"> </A> <A HREF="/~foo/click.map"> <IMG SRC="/~foo/click.gif"> </A> Common Gateway Interface INTERNET magazine 1996/3 173
Common Gateway Interface AddType text/x-serverparsed-html.html <!--exec cmd=" " --> 1 2 <!-exec cmd="who"--> j 174 INTERNET magazine 1996/3
1 % echo 0 > count % chmod 666 count 2!/bin/sh c = `/bin/cat count` expr $c + 1 /usr/bin/tee count Common Gateway Interface % chmod 755 count.sh 3 <!--exec cmd="./ count.sh"--> j INTERNET magazine 1996/3 175
Common Gateway Interface 1 <FORM ACTION=" URL">... </FORM> <INPUT TYPE="text" NAME= "name" SIZE=n MAXLENGTH=n VALUE="value"> <TEXTAREA NAME="name" ROWS=n <HTML> <HEAD> <TITLE> </TITLE> </HEAD> <BODY> <FORM ACTION="postmail.cgi"> <BR> <INPUT TYPE="text" name="email" SIZE=40><BR> <BR> <INPUT TYPE="text" name="name" SIZE=40><BR>?<BR> <INPUT TYPE="radio" NAME="sex" value="male" CHECKED> <INPUT TYPE="radio" NAME="sex" value="female"> <INPUT TYPE="radio" NAME="sex" value="unknown"> <BR> URL <BR> <INPUT TYPE="text" NAME="url" SIZE=40><BR> <BR> <TEXTAREA NAME="comment" ROWS=4 COLS=40> </TEXTAREA><BR> <INPUT TYPE="submit" VALUE=" "> <INPUT TYPE="reset" VALUE=" "> </FORM> </BODY> </HTML> 176 INTERNET magazine 1996/3
COLS=m> </TEXTAREA> <INPUT type="checkbox" name="name" VALUE="value"> <INPUT type="radio" name="name" VALUE="value"> <SELECT NAME="name"SIZE= "n"> <OPTION VALUE="value">.. </SELECT> <INPUT TYPE="submit"VALUE= "value"> <INPUT TYPE="reset"VALUE= "value"> Common Gateway Interface 2 1 2 3 4 5 j INTERNET magazine 1996/3 177
Common Gateway Interface j!/usr/local/bin/perl postmail.cgi : sending mail from www Version 0.1/Beta $user = "foo@bar.or.jp'; $subject = 'subject'; REQUEST_METHOD $buffer if ($ENV{'REQUEST_METHOD'} eq 'POST') { read(stdin,&buffer,$env{'content_length'}); } else { $buffer = $ENV{'QUERY_STRING'}; } / @pairs = split(/&/,$buffer); foreach $pair(@pairs) { ($name,$value) = split(/=/,$pair); $value =~ tr/+/ /; $value =~ s/%([a-fa-f0-9][a-fa-f0-9])/pack("c",hex($1)/eg; $FORM{$name} = $value; } if (FORM{'email'} eq "" FORM{'name'}) { print "Content-type: text/html\n\n"; print "<TITLE>ERROR</TITLE>\n"; print "<H1> </H1>"; exit (0); } if (open(ml," /usr/lib/sendmail $user")) { print ML "From: $FORM{'email'} ($FORM{'name'})\n"; print ML "Subject: $subject\n"; print ML "X-Mailer: postmail.cgi ver.0.1/beta\n"; print ML "X-URL: $FORM{'url'}\n"; print ML "\n"; print ML "--------------------------------------------------------------\n"; print ML "$FORM{'sex'}\n"; print ML "--------------------------------------------------------------\n"; print ML "$FORM{'comment'}"; print ML "\n------------------------------------------------------------\n"; print ML "Remote host: $ENV{'REMOTE_HOST'}\n"; print ML "User Agent : $ENV{'HTTP_USER_AGENT'}\n"; close(ml); print "Content-type: text/html\n\n"; print "<TITLE>Request Accepted</TITLE>\n"; print "<H1></H1>\n"; } else { print "Content-type: text/html\n\n"; print "<TITLE>Request Rejected</TITLE>\n"; print "<H1></H1>\n"; } exit(0); 178 INTERNET magazine 1996/3
[ インターネットマガジンバックナンバーアーカイブ ] ご利用上の注意 この PDF ファイルは 株式会社インプレス R&D( 株式会社インプレスから分割 ) が 1994 年 ~2006 年まで発行した月刊誌 インターネットマガジン の誌面を PDF 化し インターネットマガジンバックナンバーアーカイブ として以下のウェブサイト All-in-One INTERNET magazine 2.0 で公開しているものです http://i.impressrd.jp/bn このファイルをご利用いただくにあたり 下記の注意事項を必ずお読みください 記載されている内容 ( 技術解説 URL 団体 企業名 商品名 価格 プレゼント募集 アンケートなど) は発行当時のものです 収録されている内容は著作権法上の保護を受けています 著作権はそれぞれの記事の著作者 ( 執筆者 写真の撮影者 イラストの作成者 編集部など ) が保持しています 著作者から許諾が得られなかった著作物は収録されていない場合があります このファイルやその内容を改変したり 商用を目的として再利用することはできません あくまで個人や企業の非商用利用での閲覧 複製 送信に限られます 収録されている内容を何らかの媒体に引用としてご利用する際は 出典として媒体名および月号 該当ページ番号 発行元 ( 株式会社インプレス R&D) コピーライトなどの情報をご明記ください オリジナルの雑誌の発行時点では 株式会社インプレス R&D( 当時は株式会社インプレス ) と著作権者は内容が正確なものであるように最大限に努めましたが すべての情報が完全に正確であることは保証できません このファイルの内容に起因する直接的および間接的な損害に対して 一切の責任を負いません お客様個人の責任においてご利用ください このファイルに関するお問い合わせ先 All-in-One INTERNET magazine 編集部 im-info@impress.co.jp Copyright 1994-2007 Impress R&D, an Impress Group company. All rights reserved.