ホテルを選ぶとき、これだけは譲れない条件TOP3は?

色々ホームページを見てまわったのですが、
欲しいフリーのCGIが見つからなかったので、
もし「このHPにあるよ」など、情報を頂けたら幸いです。
私が欲しいCGIは、

あらかじめ登録されたメンバーが居て、
そのメンバーが、管理者の指定した圧縮ファイルなど、ファイルのダウンロードをしたかしてないか、一覧で表示できる様なCGIを探しています。
ダウンロード済みの方の行にはダウンロード済みと表示されて、日時も表示されるようなシステムです。

もしくは、「ダウンロード完了登録フォーム」を用意して、そこからコンボなどで自分の名前を選び、登録すると、一覧に「ダウンロード済み」「日時」が表示されるような仕組みでもかまいません。どちらかというとこちらの方が欲しいシステムです。

CGIの知識がほとんどないので、設置するくらいしかできません。
一から作ることが出来ないので、フリーで探しています。
凄くわがままな要望なんですが、過去にこういった事をした事がある方、いらっしゃいましたら情報を下さい。宜しくお願いします。

A 回答 (6件)

#!/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等間違っているのでしょうか。
申し訳ありません。

補足日時:2004/08/03 13:14
    • good
    • 0

> すべてを書いて、UPしてみましたが、


> ソースがブラウザに全部出てしまいました。

あちゃちゃ・・・たぶん、サーバが PHP に
対応していないという事だと思いますよ。

<?php
phpinfo();
?>

という3行の phpinfo.php というファイルを作って
サーバにアップして、ブラウザから見た場合に、
ソースがそのまま表示されるのであれば、サーバが
PHP を処理していない、つまり対応していないって
ことになりますね・・・

う~ん、Perl で書き直しますか

この回答への補足

申し訳ありませんでした。
サーバのホームページには対応と書いてあったのですが、もしかすると契約はPHP使用可能の契約をしていないのかもしれないです。
本当に申し訳ありません。

Perlでのやり方ですが、
#!/usr/local/bin/perl~return 1;までを書いて、
download_view.cgiの名前で保存して、
download.csvとともにUP(アクセス権、755、644で)して、
download_view.cgiにアクセスすれば宜しいのでしょうか。

何度も本当に申し訳ありません・・・。
とても助かります。

補足日時:2004/07/29 18:17
    • good
    • 0

この回答への補足

<?php
$user_name = $_GET["user_name"];

から

</table>
</body></html>

までをdownload_view.phpというファイルで保存するのでしょうか。
すべてを書いて、UPしてみましたが、ソースがブラウザに全部出てしまいました。

<html>から</html>までを記載すればいいのでしょうか。
何度もすいません・・・。

補足日時:2004/07/29 14:13
    • good
    • 0

<?php


$user_name = $_GET["user_name"];

$file_names = array("file1.zip", "file2.zip", "file3.zip");
$user_names = array("yamada", "sato", "inoue");

if($_GET["file_name"]){
$file_name = $_GET["file_name"];
$fp = fopen("download.csv", "a");
fwrite($fp, "${user_name},${file_name},".date("Y-m-d H:i:s")."\n");
fclose($fp);
}

$fp = fopen("download.csv", "r");
while($line = fgetcsv($fp, 1000, ",")){
$download[$line[0]][$line[1]] = $line[2];
}
fclose ($fp);
?>
<html><head></head>
<body>
<?php echo $user_name; ?> さんのダウンロード状況
<table border="1">
<tr>
<td>DL</td>
<td>ファイル名</td>
<td>日時</td>
</tr>
<?php
foreach($file_names as $file_name){
if($download[$user_name][$file_name]){
?>
<tr>
<td>済</td>
<td><?php echo $file_name; ?></td>
<td><?php echo $download[$user_name][$file_name]; ?></td>
</tr>
<?php
}else{
?>
<tr>
<td>未</td>
<td><?php echo $file_name; ?></td>
<td><a href="download_view.php?user_name=<?php echo $user_name; ?>&file_name=<?php echo $file_name; ?>">ダウンロード</a></td>
</tr>
<?php
}
}
?>
</table>
</body></html>

上記ファイルを download_view.php としてサーバーに
アップし
さらに下記のような download.csv を書き込み権限を
与えてアップして下さい

sato,file1.zip.2004/07/01 12:00:00

完了しましたら
http://xxx.yyy.zzz/download_view?user_name=sato
とアクセスしてみてください。

いくつか仕様について質問があります。

■ メンバーは固定ですか?Web から追加・削除しますか?
■ ダウンロードするファイルは固定ですか?Web から追加・削除しますか?

Web から追加・削除するなら、そのページもつくりますが

この回答への補足

回答ありがとうございます。
設置をしてみて、ご報告します。
ご質問についてですが、
メンバーはWEBから追加出来ると大変ありがたいです。
ダウンロードするファイルは追加、削除します。

最初は一つですが、
ファイルNO.1、ファイルNO.2・・・というように追加していくつもりです。

お手数かけて大変申し訳ありません。
ありがとうございます。

補足日時:2004/07/29 13:05
    • good
    • 0

例えば、この OK Web も PHP を利用されていますが


設置することができるのかは、サーバによります。

下記のファイルを phpinfo.php という名前で
作成して、サーバにアップし
http://xxx.yyy.zzz/~aaa/phpinfo.php などの
ようにブラウザから見て、いろいろ情報が
見られれば PHP が使えるサーバってことになります。

<?php
phpinfo();
?>

というファイルです。

# 誰か Perl で書いてあるのがあればいいんですがね。

この回答への補足

サーバの詳細を調べたところPHPが使用できるみたいです。

補足日時:2004/07/29 03:25
    • good
    • 0

CGI は Perl 言語で書かれたものでないと


いけないでしょうか?

もし PHP 言語での CGI でよろしければ、
これらくらいのものなら10分でお作りして
ここに書き込みしてあげれますけど。

この回答への補足

回答ありがとうございます。
PHP言語で作成されたCGIというのは設置の仕方などは通常のPerlのものと同じなのでしょうか?
知識不足ですいません。
もし私のような初心者でも設置できるようなものでしたら、ぜひ書いて頂きたいのですが。
お手数かけて本当に申し訳ありません。

補足日時:2004/07/28 15:12
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!