私は周りを見回していて// if sucess
、ファイルの名前が変更されたときに実行する必要があるようです:
if(rename("$filepath$oldfilename", "$filepath$filename")===true) { // if success }
残念ながら、この関数は同じ名前の別のファイルが存在する場合でもファイルの名前を変更するため、常に成功します。
しかし、さらに悪いことに...同じ名前の別のファイルがすでに存在するため、それはどういうわけか削除されます...
誰かがこれを防ぐ方法を知っていますか?そして、なぜこれが起こっているのですか?!
追加情報:
ユーザーにテキストエリアを介してファイル名を変更する機会を与えています。ファイルが投稿されると、名前変更機能が開始されます。
if(rename("$filepath$oldfilename", "$filepath$filename")===true)
{
$WhatToUpdateQueryResult = mysql_query($WhatToUpdateQuery) or die ("query fout ". mysql_error() );
if ($WhatToUpdateQueryResult == 1)
{
$uploadmsg = "Document name successfully updated.<br/> From: $oldfilename <br/> To: $filename.";
}
}
else
{
$uploadmsg = "Can't update document. A file with the same name already exists.";
}
注:名前をまだ存在しない名前に変更する限り、正常に機能します。しかし、それでも、それは常に真実になります。