

色々ホームページを見てまわったのですが、
欲しいフリーのCGIが見つからなかったので、
もし「このHPにあるよ」など、情報を頂けたら幸いです。
私が欲しいCGIは、
あらかじめ登録されたメンバーが居て、
そのメンバーが、管理者の指定した圧縮ファイルなど、ファイルのダウンロードをしたかしてないか、一覧で表示できる様なCGIを探しています。
ダウンロード済みの方の行にはダウンロード済みと表示されて、日時も表示されるようなシステムです。
もしくは、「ダウンロード完了登録フォーム」を用意して、そこからコンボなどで自分の名前を選び、登録すると、一覧に「ダウンロード済み」「日時」が表示されるような仕組みでもかまいません。どちらかというとこちらの方が欲しいシステムです。
CGIの知識がほとんどないので、設置するくらいしかできません。
一から作ることが出来ないので、フリーで探しています。
凄くわがままな要望なんですが、過去にこういった事をした事がある方、いらっしゃいましたら情報を下さい。宜しくお願いします。
No.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 に書き換えて見ました。
う~ん、なれない言語だとちょっとしんどいなぁ
No.5
- 回答日時:
> すべてを書いて、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にアクセスすれば宜しいのでしょうか。
何度も本当に申し訳ありません・・・。
とても助かります。
No.4
- 回答日時:
>
http://xxx.yyy.zzz/download_view?user_name=satoはもちろん
http://xxx.yyy.zzz/download_view.php?user_name=s …
の間違えです。(汗)
この回答への補足
<?php
$user_name = $_GET["user_name"];
から
</table>
</body></html>
までをdownload_view.phpというファイルで保存するのでしょうか。
すべてを書いて、UPしてみましたが、ソースがブラウザに全部出てしまいました。
<html>から</html>までを記載すればいいのでしょうか。
何度もすいません・・・。
No.3
- 回答日時:
<?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・・・というように追加していくつもりです。
お手数かけて大変申し訳ありません。
ありがとうございます。
No.2
- 回答日時:
例えば、この OK Web も PHP を利用されていますが
設置することができるのかは、サーバによります。
下記のファイルを phpinfo.php という名前で
作成して、サーバにアップし
http://xxx.yyy.zzz/~aaa/phpinfo.php などの
ようにブラウザから見て、いろいろ情報が
見られれば PHP が使えるサーバってことになります。
<?php
phpinfo();
?>
というファイルです。
# 誰か Perl で書いてあるのがあればいいんですがね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI (フリーの)ツリー掲示版CGI、昔は多用させてもらいましたが・・今セキュリティ上どうでしょう? 2 2023/06/25 07:18
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- iPhone(アイフォーン) au→docomoのahamoへ キャリアメール引き継ぎたいです。 myauからアドレス持ち運びサー 1 2023/06/03 10:53
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- その他(IT・Webサービス) WEBサイト内のファイルを探す方法は? 1 2022/11/11 16:38
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- InternetExplorer(IE) お気に入りの「一覧」の表示 2 2022/11/21 13:59
- 法人税 電子帳簿保存法について 1 2022/04/07 11:17
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
- 教えて!goo 【朗報】ブロック機能Updateに伴い利用者をブロックすると対象者の質問も非表示になります。類似質問 12 2022/06/22 22:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SUN BBSの改造方法
-
アンケートの回答をcsv形式で保...
-
ネットワークサービスについて
-
wordの数式について 定積分を書...
-
文字コードが正常に変換されま...
-
ラジオボタンが両方とも選択で...
-
掲示板(kentさんの所のsunbbs...
-
htmlからパラメータで、cgiに渡...
-
submitボタンの幅を指定する方法
-
SELECTでgroup byした時の挙動
-
自作のアクセスカウンタ
-
「value」に2つの値をセットす...
-
onMouseoverで下線表示したい(...
-
CGIページの最終更新日時
-
FORMのselectの選択肢を最初か...
-
read関数で読み込んだ内容をフ...
-
プログラミングについての質問...
-
選択されたチェック先に複数送...
-
【perl/cgi】文字列を検索して...
-
キャッシュを読まない方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SUN BBSの改造方法
-
ラジオボタン、チェックボック...
-
CGI.pmを利用のテーブル表示に...
-
perlで書いたcgiでsqliteの使い...
-
メソッドについて
-
電話番号を読み込むプログラム...
-
Perlでuse socketを使用してフ...
-
tracert ができない原因
-
チェックボックスでのor検索
-
太郎を太と郎に分ける方法。
-
ダウンロードをした人の一覧を...
-
こんな事ってできますか?
-
C# クラスの配列の並び替えに...
-
CGI(Perl)内での必須項目チェ...
-
名前の改行の仕方
-
Windows7でVBScriptによるネッ...
-
入力フォームに全角・半角スペ...
-
JNAVIから提供されたメー...
-
CGIメールフォームの件名について
-
ネットワークサービスについて
おすすめ情報