CGIサンプル |
CGI のプログラムのサンプルです。
#! /usr/local/bin/perl $pass = 'guest'; $script = './pass.cgi'; $method = 'POST'; &form_deco; if ($FORM{'pass'} ne "$pass") { &enter; } &page; sub page { &header; print <<"EOM"; <DIV ALIGN="center">▼<BR>▼<BR>▼<BR> <HR><FONT SIZE=+1>よ う こ そ</FONT></DIV><HR> <BR> パスワードは合っていたようですね。<BR><BR> しかしここには何もありません。<BR><BR> このページは URL が判っても、直接参照できないため、必ずパスワードを要求されます。<BR> ただし、画像などの外部データは URL を直接指定すれば見えてしまいますので、簡単にはわかりにくい名前を付けたフォルダ(ディレクトリ)を作成して、そこから呼び出すようにします。<BR><BR> <HR> </BODY></HTML> EOM exit; } sub enter { &header; print <<"EOM"; <DIV ALIGN="center">▼<BR>▼<BR>▼<BR>▼<BR>▼<BR><BR> <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=5 width=70%> <TR ALIGN="center"><TD BGCOLOR="#333333" COLSPAN=3> パスワードを入力して下さい </TD></TR> <TR ALIGN="center"><TD BGCOLOR="#CC6666">...............</TD><TD BGCOLOR="#999999"><BR> <form action="$script" method="$method"> <input type=password name=pass size=20><BR> <input type=submit value="入室する"> </form> </TD><TD BGCOLOR="#CC6666">...............</TD></TR> <TR ALIGN="center"><TD BGCOLOR="#333333" COLSPAN=3> </TD></TR> </TABLE> </BODY></HTML> EOM exit; } sub form_deco { 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; } } sub header { print "Content-type: text/html\n\n"; print "<HTML>\n<HEAD>\n"; print "<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=x-euc-jp\">\n"; print "<TITLE>簡易パスワード付きウェブページ</TITLE>\n"; print "<BODY BGCOLOR=\"#666666\" TEXT=\"#FFFFFF\" LINK=\"#CC3333\" VLINK=\"#993333\" ALINK=\"#CC3333\">\n"; } |