色々ホームページを見てまわったのですが、
欲しいフリーの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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで集計したい。
-
フォームを再送信しますか?
-
apacheでPerl CGIが作動せず、5...
-
ホームページでCGIのフォームを...
-
cgi アクセス制限 エラー
-
cgiの設置がなくてもhtmlの...
-
古ーくからフリーのtree.cgi掲...
-
条件分岐のCGIサンプル
-
Movable Type 5 個人無償ライセ...
-
めちゃきれい
-
number 改行が追加できない
-
生成AI画像について
-
3DCG
-
ホームページにメールフォーム...
-
CGIの記述について教えてくださ...
-
CGIの設置が分かりません・・・
-
ホームページにCGIを設置したの...
-
ホームページにCGIを設置したの...
-
サーバーのエラーでおしえてく...
-
ホームページの事でおしえてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SUN BBSの改造方法
-
tracert ができない原因
-
Windows7でVBScriptによるネッ...
-
データの一部抜き出しについて
-
入力フォームに全角・半角スペ...
-
チェックボックスでのor検索
-
perl ヒア文(print <<"EOM" ...
-
python初心者です。
-
cgiによる文字入力数の制限につ...
-
【再】Cookieを使用してフォー...
-
JNAVIから提供されたメー...
-
Excel の VBA で、IEのWeb操作
-
C# クラスの配列の並び替えに...
-
Kentweb メールフォームについて
-
@town = ("Aタウン","Bタウン",...
-
文字って数字で表現・・・
-
CGI(Perl)内での必須項目チェ...
-
日本語文字化け(GETメソッド?)
-
ネットワークサービスについて
-
sendmailのメール送信ができま...
おすすめ情報