記事No | : 2593 |
投稿日 | : 2008/01/10(Thu) 14:40:40 |
タイトル | : clipmail 改造 |
ID情報 | : habomai |
投稿者 | : habomai |
URL | : http://www.shopforza.net/clipmail/admin.cgi |
改造についての質問ですので、わかる方がいらっしゃいましたら、どうかご享受ください。
あまりperlについて詳しくなく、本やネットで調べながらなのでコーディングに不備があるかもしれませんが。。。(汗
clipmailで、CSVダウンロードをする際に、
log.cgiをnew.cgiにリネームしてからnew.cgiを読み込んでCSVファイルを作成するように変更しました。
(new.cgiを作った後、log.cgiは新たに作成しております)
CSVファイルを作成したのち、new.cgiファイルを再度リネームして、$timeによって取得した日時をファイル名にして他のディレクトリ内に保存するようにしています。
CSVファイル名もデフォルトで$timeによって取得した日時が入るように変更してあります。
実際に処理を行った際、ダウンロードを選択して「開く」や「保存」を選んだ時は何も問題ないのですが、
「キャンセル」を選んでCSVダウンロードを取りやめた際も、
日時のファイル名になったものが保存用ファイルの中に作成されてしまいます。
キャンセルしたあと、CSVダウンロードしようとしてもlog.cgiは空っぽなのです・・・。
ダイアログボックスにてキャンセルを押された場合は何も処理をしないようにしたいのですが、
キャンセルを押したという判断をどこでしているのかわからなかったため、質問させていただきました。
admin.cgiをテキストにして下記URLにUPしておきますので、
どなたか教えていただけないでしょうか。
http://www.shopforza.net/clipmail/admin.txt
※私が新たに追加した箇所は89行目あたり〜95行目あたりの
# リネーム
$ret = rename $logfile,$newfile;
# 新たにログファイル作成
open(MAKE,">$logfile");
close(MAKE);
chmod(0606,"$logfile");
143行目あたり〜148行目あたりの
# ローカル時間取得⇒ファイル名変更
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
$yy = $year+1900;
$mm = $mon+1;
$time = "$yy,$mm,$mday,$hour,$min,$sec";
$ret = rename("$newfile","./rireki/$time.cgi");
この2か所です。
よろしくお願いいたします。
記事No | : 2602 |
投稿日 | : 2008/01/11(Fri) 17:25:06 |
タイトル | : Re: clipmail 改造 |
ID情報 | : teketen |
投稿者 | : てけてん |
> ダイアログボックスにてキャンセルを押された場合は何も処理をしないようにしたいのですが、
> キャンセルを押したという判断をどこでしているのかわからなかったため、質問させていただきました。
ダウンロードで、保存先を選択する時のダイアログですね。
CGIスクリプトでは、そのような判断はしていません。
これは、ユーザーのブラウザの操作で、保存をするかキャンセルをするかなので、クライアントの問題です。
(サーバーで動作するCGIスクリプトの問題ではない)
ログファイルをダウンロードする時、管理画面の「ダウンロード」ボタンを押した時にスクリプトにアクセスする為、その時点でスクリプトはダウンロードするよう処理をします。
(ユーザーがダイアログで、保存をするかキャンセルをするかはスクリプトでは把握しない)
ユーザーがダイアログでキャンセルした情報は、CGIスクリプトには渡りません。
ですので、対応策としては、
・JavaScriptを使い、「ダウンロード」ボタンを押した時に、本当に保存するか確認のダイアログを表示し、OKを押したらダウンロードダイアログを表示するようにする。
(その際、ダウンロードダイアログでは、キャンセルボタンは押さないようにする)
・CGIスクリプトの方で、ログのダウンロードの処理を工夫する
などの方法があるかと思います。
JavaScriptについては、ここではサポート出来ませんので、ご自分で調べてください。
スクリプトの処理を工夫する…ですが、これはアイディア次第ですね。
例えば、log.cgiが0kb(空)の場合は、if文で処理を分岐させ、new.cgiをダウンロードするような処理を加えるとか。
色々と考え方があるかと思いますので、がんばってみてください。
アイディアだけですが、私からは以上です。
記事No | : 2606 |
投稿日 | : 2008/01/11(Fri) 19:36:50 |
タイトル | : Re^2: clipmail 改造 |
ID情報 | : habomai |
投稿者 | : habomai |
URL | : http://www.shopforza.net/clipmail/admin.cgi |
てけてん様
とても丁寧な回答ありがとうございます。
保存するかキャンセルするかの判断はCGIじゃなかったんですね。。。ソースを何度確認しても、わからなかったはずです><。
アイディアについてもとても参考になりました!
また色々調べて思い通りの動きをしてくれるまで挑戦したいと思います。
この度は親切にありがとうございました^^