ユーザーが PHP Web サイトからファイルをアップロードできるようにしようとしています。すべてのファイルがサーバー上の 1 つのフォルダーに保存されるため、2 人の異なるユーザーがまったく同じ名前の 2 つのファイルをアップロードする可能性があります (可能性は低いとは言えますが)。または、まったく同じファイルである可能性があります。
exec("openssl md5 " . $file['upload']['tmp_name'])
どちらの場合も、ファイルがアップロードされた直後にファイルの MD5 ハッシュを決定するために使用したいと思います。次に、データベースに同一の MD5 ハッシュがあるかどうかを確認します。見つかった場合は、アップロードを完了しません。
ただし、move_uploaded_file
ドキュメントで、次のコメントを見つけました。
警告: データベースに md5_file ハッシュを保存してアップロードされたファイルの記録を保持する場合、これはユーザーが同じファイルを 2 回アップロードするのを防ぐのに役立ちます。また、ファイルが削除されたときに、対応するハッシュを見つけてデータベースで削除することはできません。
これは本当にそうですか?tmp ディレクトリ内のファイルの MD5 ハッシュは、永続的な場所に移動した後に変更されますか? なぜそうなるのか理解できません。それに関係なく、同じファイルがファイルシステムに複数回アップロードされないようにする別のより良い方法はありますか?