Ok, from the top!

The way you add new fields has been shown earlier in this thread.

To make them required, edit the header_php.php file you are currently working with - there should only be one. It's the one where you have $_SESSION['xxxx'] = $xxxx

If there is a variable set somewhere in this page called $error, which is either true or false, you need to follow the same protocol.

If not, then you can use this:

Code:
  if (!zen_not_null($_POST['my_variable_name'])) {  //perform ALL checks on relevancy here
    $messageStack->add_session($_GET['main_page'], TEXT_ERROR_VARIABLE_MISSING, 'error');
    zen_redirect(zen_href_link($_GET['main_page']));
  }
It's not the prettiest way of doing it, and if the customer has entered an entire page of data, and then comes across this type of error they will hate you, as none of their data will be re-populated, but as I don't know where you are adding the details, or what other modules you have installed, it is the only fail-safe way of doing it I can think of.

Absolute