What are the potential security risks of allowing clients to upload files with their own chosen file names in PHP applications?

Allowing clients to upload files with their own chosen file names in PHP applications can pose security risks such as file name manipulation, which can lead to directory traversal attacks or overwrite existing files. To mitigate this risk, it is recommended to rename the uploaded files with a secure and unique file name generated by the server.

// Generate a secure and unique file name for uploaded files
$targetDir = "uploads/";
$fileName = uniqid() . '_' . basename($_FILES["file"]["name"]);
$targetFilePath = $targetDir . $fileName;

// Move the uploaded file to the target directory with the new secure file name
if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath)) {
    echo "File uploaded successfully.";
} else {
    echo "Sorry, there was an error uploading your file.";
}