[Home] [-5] [<] [>] [+5]
CGIサンプル

CGI のプログラムのサンプルです。

【CGI とは】
【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";
}