#!/usr/local/bin/perl
print "Content-type: text/html\n";
print "\n";
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $query_string, $ENV{'CONTENT_LENGTH'});
} else {
$query_string = $ENV{'QUERY_STRING'};
}
@a = split(/&/, $query_string);
foreach $a (@a) {
($name, $value) = split(/=/, $a);
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
$user_name = $FORM{"user_name"};
@file_names = ("file1.zip", "file2.zip", "file3.zip");
@user_names = ("yamada", "sato", "inoue");
if($FORM{"file_name"}){
$file_name = $FORM{"file_name"};
open(OUT, ">> download.csv");
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time());
$mon ++;
print(OUT "${user_name},${file_name},${year}/${mon}/${mday} ${hour}:${min}:${sec}\n");
close(OUT);
}
open(IN, "< download.csv");
while($line = <IN>){
chop($line);
@line = split(",", $line);
$download{$line[0]}{$line[1]} = $line[2];
}
close(IN);
print <<_EOF_;
<html><head>
</head>
<body>
$user_name さんのダウンロード状況
<table border="1">
<tr>
<td>DL</td>
<td>ファイル名</td>
<td>日時</td>
</tr>
_EOF_
foreach $file_name (@file_names) {
if($download{$user_name}{$file_name}){
print <<_EOF_;
<tr>
<td>済</td>
<td>$file_name</td>
<td>$download{$user_name}{$file_name}}</td>
</tr>
_EOF_
}else{
print <<_EOF_;
<tr>
<td>未</td>
<td>$file_name</td>
<td><a href="download_view.php?user_name=${user_name}&file_name=${file_name}">ダウンロード</a></td>
</tr>
_EOF_
}
}
print <<_EOF_;
</table>
</body></html>
_EOF_
return 1;
以上 Perl の CGI に書き換えて見ました。
う~ん、なれない言語だとちょっとしんどいなぁ
補足
下にも記載致しましたが、やはりうまく動かないみたいです。 アクセスするURL等間違っているのでしょうか。 申し訳ありません。