Lo que pasa no te pase la solucion te di una idea de como encararla.
No uses 2 archivos, 1 el formulario y otro el que maneja el post. Usa el mismo archivo y por media de condiciones de if, decidi si mostrarlo o no.
Aca te dejo otro esqueleto pero con un poco mas de tu codigo para ver si te das una idea.
Código PHP:
Ver original$error_message = "";
/* Esta pregunta de seria hay datos recibidos por post? */
if($_POST)
{
$email_exp = "^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$";
/* Si los hay entrara por aca */
if( isset($_POST['email']) && eregi($email_exp,$_POST['email'])) {
/* Si entra aca es porque llego la variable email por post y cumple
la expresion regular*/
$email_subject = "New e-mail subscriber";
$email_from = $_POST['email']; // required
$error_message = "";
$email_message = "Detalles del formulario debajo.\n\n";
/* Aca clean_string, no hace falta sino no huviera pasado la expresion regular*/
//$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Email: ".$email_from."\n";
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
@mail($email_to, $email_subject, $email_message, $headers); echo "Gracias por contactarnos. Te mantendremos informado muy pronto.";
}
else
{
$error_message = 'Mail invalido';
}
}
if($error_message != "" )
{
/* Aca pone tu formulario html y en el atributo action del formulario pone esta pagina*/
}
Espero sirva, saludos.