A complete contact form with both client and server side validation