A broken PHP form almost always comes down to one of five things: wrong method attribute, a mismatched name on your input, checking $_POST with the wrong key, a form that isn't actually submitting, or output sent before a header() redirect. Fix those five and "PHP POST not working" stops being a mystery.

You hit submit. Nothing happens. Or worse — the page reloads and $_POST is just... empty. You var_dump() it, get array(0) { }, and start questioning every life choice that led you here.

Here's the direct answer: it's not really a "PHP bug." Nine times out of ten it's a small disconnect between your HTML form tag and the script reading it.

How PHP Actually Reads Form Data

When a form submits, PHP populates $_POST (for method="post") or $_GET (for method="get") using the input's name attribute — not the id, not the label text.