as an extra comment I think the difficulty with forms is to make them nice to use -
so the duplicate validating (javascript for quick user feedback, php for proper validating)
providing good feedback during validation
ensuring fields are still entered if validation throws you back
how to display and get results for dynamically generated items e.g multiple checkboxes
using images for submission as well as submit button
so like most of this stuff it needs a good working knowledge of the surrounding environment not just php
then again, dealt with one problem at a time, they soon become no big deal