Handling Form Data from Arduino Web Server (Well Structured)

Your readHTTPRequest() function has some serious flaws. You test that there is at least one character to read from the client, and then proceed to read as many as you want. That doesn't work.

The carriage return would really make your code more readable.

What does the page source look like when the form arrives at the browser? What does your serial output look like?