What are the best practices for handling form submissions in PHP to avoid issues like headers already sent errors?

When handling form submissions in PHP, it is important to ensure that no output is sent to the browser before headers are set. This can be achieved by placing all PHP code, including header functions like `header()` and `session_start()`, at the beginning of the script before any HTML or whitespace. Additionally, using output buffering functions like `ob_start()` can help prevent headers already sent errors by buffering the output until headers are set.

<?php
ob_start(); // Start output buffering

// Process form submission
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Handle form data
    // Set headers if necessary
    header("Location: success.php");
    exit();
}

ob_end_flush(); // Flush output buffer
?>
<!DOCTYPE html>
<html>
<head>
    <title>Form Submission</title>
</head>
<body>
    <!-- Form HTML goes here -->
</body>
</html>