prova a sostituire con questo:

Codice PHP:
$error_message ""$email_exp "^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$"; if(!eregi($email_exp,$email)) {
$error_message .= 'The Email Address you entered does not appear to be valid.
'
; }
$string_exp "^[a-z .'-]+$"; if(!eregi($string_exp,$first)) {
$error_message .= 'The First Name you entered does not appear to be valid.
'
; } if(!eregi($string_exp,$last)) {
$error_message .= 'The Last Name you entered does not appear to be valid.
'
; } if(strlen($comments) < 2
il problema è che nelle funzioni di controllo andava a guardare variabili che non esistevano, ad esempio il nome veniva definito solo first:

$first = $_POST['first']; // required

ma poi quando lo controllava per vedere se erano presenti errori lo chimava $first_name che era una variabile vuota e quindi dava sempre errore.