投稿日:2004年02月17日 作成鷹の巣

No.14676 CGIで同一ファイル名への簡単な上書き防止策はないか?



CGIで同一ファイル名への簡単な上書き防止策はないか?

No.14676 投稿時間:2004年02月17日(Tue) 05:49 投稿者名:CGI URL:

サーバーは既に、完成して、動作していますが、CGIファイルを
作成していて、「 /home/www/kakunow 」の部分に、
入力フォームより「 name="name" 」を獲て、*.datファィルを
複数個、溜め込む様に、したいのですが、入力フォームで、同
じ名前を入力した場合、始めからあります、ファィルに上書き
してしまうのですが、以下の記述の部分に手心を少し加える事
で、同じファィル名のファィルを「 /home/www/kakunow 」の部
分に作らない記述方法は、ありませんか?、ご教授、宜しく
お願い致します。

$datfile="/home/www/kakunow/$form{'name'}.dat";
open(FILEIN, ">$datfile") or &error;
print FILEIN 1;
close(FILEIN);
chmod(0666,"$datfile");


簡単な上書き防止策。

No.14677 投稿時間:2004年02月17日(Tue) 06:58 投稿者名:APACHE URL:http://kemuri-net.dip.jp/~server/

> $datfile="/home/www/kakunow/$form{'name'}.dat";
> open(FILEIN, ">$datfile") or &error;
> print FILEIN 1;
> close(FILEIN);
> chmod(0666,"$datfile");
Perlは読めないんで案だけ。
※PHPしかわかりません…
1.ディレクトリの内容を読み込みファイル名を監査
同一名があったら別名称で保存 or 既に使われている旨の警告。

2.使用された名前をログに記録しファイル作成前にログファイルを読み込みチェック
同一名があったら別名称で保存 or 既に使われている旨の警告。

3.ファイルの存在を確認する関数でチェック
TRUEが返ってきたら別名称で保存 or 既に使われている旨の警告。

これくらいでしょうかね。


参考PHP。

No.14718 投稿時間:2004年02月19日(Thu) 08:12 投稿者名:APACHE URL:http://kemuri-net.dip.jp/~server/

> > $datfile="/home/www/kakunow/$form{'name'}.dat";
> > open(FILEIN, ">$datfile") or &error;
> > print FILEIN 1;
> > close(FILEIN);
> > chmod(0666,"$datfile");
>
> 3.ファイルの存在を確認する関数でチェック
> TRUEが返ってきたら別名称で保存 or 既に使われている旨の警告。
<?php
$datfile = "/home/www/kakunow/{$_POST["name"]}.dat";
if(file_exists($datfile)){
echo "既に存在しています。";
exit;
}else{
$fp = fopen ($datfile, "w");
fputs($fp,"1");
fclose($fp);
chmod ($datfile, 0666);
}
?>
こんな感じ。


|目次|掲示板|過去ログ目次|▲頁先頭|