Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/09/2011, 08:57
rvelezb
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 81
Antigüedad: 20 años, 10 meses
Puntos: 1
Exclamación Formulario que no envía todos los campos por correo

Hola, tengo un formulario web, pero por algún motivo hay dos campos (Asunto y Empresa) que no me los envía por correo, y creo que el problema está en que cuando le doy a enviar lo que hago es invocar una función JavaScript para validar el formulario, y casualmente, esos dos campos que no me envía, no los valido, ya que son opcionales, y no sé si por eso será el que no me lo envía.

No paro de darle vueltas pero no soy capaz de encontrar el dichoso fallo.

Os dejo tanto la parte del código HTML del formulario, como el JavaScript de validación, como el código PHP de envío por correo.

Código:
<script language="javascript" type="text/javascript">
<!--
function Validar() {
if (document.contacto.Nombre.value == "") {
alert ('Necesitamos conocer su "Nombre"'); document.contacto.Nombre.focus(); return (false);
} else if (document.contacto.eMail.value == "") {
alert ('Debe especificar una direccion de "Correo"'); document.contacto.eMail.focus(); return (false);
} else if (document.contacto.Mensaje.value == "") {
alert ('Debe especificar un "Mensaje"'); document.contacto.Mensaje.focus(); return (false);
} document.contacto.submit();
}
--> </script>
Código HTML:
<form name="contacto" method="post" onsubmit="return Validar();" action="enviar.php">
<p align="left">
<label><span class="Estilo1">Nombre</span><br />
<input name="Nombre" class="campo" type="text" size="50" />
</label>
</p>
<p align="left">
<label><span class="Estilo1">E-mail</span><br />
<input name="eMail" class="campo" type="text" size="50" />
</label>
</p>
<p align="left">
<label><span class="Estilo1">Empresa</span><br />
<input name="Empresa" class="campo" type="text" size="50" />
</label>
</p>
<p align="left">
<label> <span class="Estilo1">Asunto</span><br />
<input name="Asunto" class="campo" type="text" size="50" />
</label>
</p>
<p align="left">
<label><span class="Estilo1">Mensaje</span><br />
<textarea name="Mensaje" class="campo" cols="48" rows="8"></textarea>
</label>
</p>
<input type="submit" name="Enviar" value="Enviar" />
<label>
<input type="reset" name="Borrar" value="Borrar" />
</label>
</form> 
Código PHP:
<?php
    ob_start
(); // Buffering de salida. Para que no haya problemas luego con la funcion "header()"
    
$correo $_POST['eMail']; // guardamos el campo email en una variable ya que lo utilizaremos en varias ocasiones en el script
    
$cuerpo "<h1><u>Formulario de contacto</u></h1>";
    
$cuerpo .= "Nombre: <strong>" $_POST['Nombre'] . "</strong><br />";
    
$cuerpo .= "E-mail: <strong>" $correo "</strong><br />";
    
$cuerpo .= "Empresa: <strong" $_POST['Empresa'] . "</strong><br />";
    
$cuerpo .= "Asunto: <strong" $_POST['Asunto'] . "</strong><br />";
    
$cuerpo .= "Mensaje: <strong>" $_POST['Mensaje'] . "</strong>";

    
// para el envio en formato HTML

    
$cabeceras  'MIME-Version: 1.0' "\r\n";

    
$cabeceras .= 'Content-type: text/html; charset=utf-8' "\r\n";

/* direccion del remitente que la cogemos del formulario, en su programa de correo, en la línea De o From, le saldrá la dirección que se ha 

puesto en el formulario */

    
$cabeceras .= "From: " $correo "\r\n";

/* direccion de respuesta, la cogemos del formulario, si le damos desde nuestro programa de correo, a Responder o Reply, directamente responderá 

a la dirección que se ha puesto en el formulario */

    
$cabeceras .= "Reply-To: " $correo "\r\n";

// ruta del mensaje desde origen a destino

    
$cabeceras .= "Return-path: " $correo "\r\n";

            
// mando el correo... con la función mail()
    
if (mail("micorreo","Formulario de contacto",$cuerpo,$cabeceras)) {
// lo pongo dentro de un if para saber si hay problemas durante el envio

        // Redirijo a la pagina de formulario recibido correctamente

            
header("location:enviado.html");

    } else {

        
// Redirijo a la pagina de formulario enviado erroneamente

            
header("location:error.html");

    } 
// cierro el 'else' del 'if' la funcion 'mail()'
?>