In the context of PHP development, what are the best practices for handling image uploads and maintaining image metadata such as titles and alt-texts?

When handling image uploads in PHP, it is important to validate the file type, size, and ensure secure storage. To maintain image metadata such as titles and alt-texts, you can store this information in a database along with the image file path. This allows for easy retrieval and updating of metadata when displaying the images on a website.

// Handle image upload
if(isset($_FILES['image'])){
    $file_name = $_FILES['image']['name'];
    $file_tmp = $_FILES['image']['tmp_name'];
    $file_size = $_FILES['image']['size'];
    
    // Validate file type and size
    $allowed_extensions = array('jpg', 'jpeg', 'png');
    $file_extension = pathinfo($file_name, PATHINFO_EXTENSION);
    
    if(in_array($file_extension, $allowed_extensions) && $file_size < 5000000){
        $upload_path = 'uploads/' . $file_name;
        move_uploaded_file($file_tmp, $upload_path);
        
        // Store image metadata in database
        $title = $_POST['title'];
        $alt_text = $_POST['alt_text'];
        
        // Insert metadata into database
        $sql = "INSERT INTO images (file_path, title, alt_text) VALUES ('$upload_path', '$title', '$alt_text')";
        // Execute SQL query
    } else {
        echo "Invalid file type or size.";
    }
}