PHP ファイル名が同じ場合にアップロードを許可しない方法
PHPファイル名を同一でもアップロードしないようにする方法としては、次の方法があります。
- ファイルのアップロード時に、アップロード先のフォルダに同名のファイルが存在するかを確認する。存在する場合、アップロード処理を行わないか、ファイルを別名に変更して重複を回避するようにする。
- ファイルのアップロード時にはファイルのハッシュ値やファイル一意の識別子をファイル名として使用することでファイル名のユニーク性を確保します。ファイル名の生成にはmd5()やsha1()などのハッシュ関数を使用できます。
ファイルのアップロード時にファイル名が既に存在するかチェックするためのサンプルコードを示します。
$targetDir = "uploads/"; // 目标文件夹路径
$fileName = $_FILES["file"]["name"]; // 获取上传文件的原始文件名
$targetFile = $targetDir . $fileName; // 组合目标文件路径
if (file_exists($targetFile)) {
echo "文件名已存在";
} else {
move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile);
echo "文件上传成功";
}
上記のコードでは、まずアップロードファイルの元々のファイル名をゲットし、目的のフォルダパスと組み合わせて目的のファイルパスを生成しています。次にfile_exists()関数を使って目的のファイルが既に存在するかを確認し、存在する場合はファイル名の重複を知らせるメッセージを表示し、それ以外はmove_uploaded_file()関数を使ってファイルを目的のフォルダに移動させ、ファイルのアップロードが完了したことを知らせるメッセージを表示しています。
この例ではわかりやすいように設定しましたが、本対応を行う際にはファイル名の安全性の考慮やファイル形式の検証などに対応する必要があります。