When using move_uploaded_file(). If the user uploads an image with a name that already exists, move_uploaded_file() will overwrite it. It's a good practice to store images in directories that you generate upon creating ur card/user/product etc...
<?php
function generateDir(int $n): string {
$characters="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
$dir = "";
for($i = 0; $i<$n; $i++){
$index = rand(0, strlen($characters)-1);
$dir .= $characters[$index];
}
return $dir;
}
$image = $_FILES["image"];
$imagePath = 'images/'. generateDir(10) .'/'. $image["name"];
mkdir($imagePath);
move_uploaded_file($image["tmp_name"], $imagePath);
?>