What are the limitations of using move_uploaded_file in PHP for file uploads?

One limitation of using move_uploaded_file in PHP for file uploads is that it does not provide any validation or security checks on the uploaded file. To address this limitation, you should perform additional checks on the file before moving it to the desired location, such as checking the file type, size, and ensuring it is not a malicious file.

// Example code snippet with additional validation before moving the uploaded file
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
    $file_name = $_FILES['file']['name'];
    $file_tmp = $_FILES['file']['tmp_name'];
    
    // Perform additional validation checks
    $allowed_types = array('jpg', 'jpeg', 'png');
    $file_extension = pathinfo($file_name, PATHINFO_EXTENSION);
    
    if (in_array($file_extension, $allowed_types) && $_FILES['file']['size'] < 5000000) {
        $upload_dir = 'uploads/';
        $destination = $upload_dir . $file_name;
        
        if (move_uploaded_file($file_tmp, $destination)) {
            echo 'File uploaded successfully!';
        } else {
            echo 'Error uploading file.';
        }
    } else {
        echo 'Invalid file type or size.';
    }
} else {
    echo 'Error uploading file.';
}