Muchas gracias, Carlojas.
El caso es que adapté el código que está en la página que me enviaste y me llegó a funcionar pero ahora, al meterle alguna otra validación, no me funciona y no sé qué puede fallarme. Incluso he vuelto a coger el código de ejemplo del que se habla en esa página y tampoco. ¿Qué puede estar fallando?
Código HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>ABDisplay - Solicitar un catálogo</title>
<link href="css/style.css" rel="stylesheet" type="text/css"/>
<SCRIPT language=JavaScript>
<!-- http://www.desarrolloweb.com/articulos/1767.php
function valida_envia(){
//valido el nombre
if (document.fvalida.nombre.value.length==0){
alert("El campo NOMBRE es requerido y está vacío")
document.fvalida.nombre.focus()
return 0;
}
//valido los apellidos
if (document.fvalida.apellidos.value.length==0){
alert("El campo APELLIDOS es requerido y está vacío")
document.fvalida.apellidos.focus()
return 0;
}
//valido la empresa
if (document.fvalida.empresa.value.length==0){
alert("El campo EMPRESA es requerido y está vacío")
document.fvalida.empresa.focus()
return 0;
}
//valido la dirección
if (document.fvalida.direccion.value.length==0){
alert("El campo DIRECCIÓN es requerido y está vacío")
document.fvalida.direccion.focus()
return 0;
}
//valido el código postal.
cp = document.fvalida.cp.value
document.fvalida.cp.value=cp
if (document.fvalida.cp.value.length==0){
alert("El campo CÓDIGO POSTAL es requerido y está vacío.")
document.fvalida.cp.focus()
return 0;
}else{
if (isNaN(cp)){
alert("Tiene que introducir un número en el campo CÓDIGO POSTAL.")
document.fvalida.cp.focus()
return 0;
}
}
//valido el teléfono.
tlf = document.fvalida.tlf.value
document.fvalida.tlf.value=tlf
if (isNaN(tlf)){
alert("Tiene que introducir un número en el campo TELÉFONO.")
document.fvalida.tlf.focus()
return 0;
}
if (document.fvalida.mail.value.length!=0){
if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(document.fvalida.mail.value))){
alert("La dirección de email es incorrecta.");
document.fvalida.mail.focus()
return 0;
}
}
//el formulario se envia
document.fvalida.submit();
}
//-->
</SCRIPT>
</head>
<body>
<div id="capa_form">
<h2><span>Catálogo ABCDisplay. Mándanos tus datos y en breve recibirás tu catálogo, ¡así de fácil!</span></h2>
<form name="fvalida" method="post" action="envia_formulario.php">
<table id="formulario">
<tr>
<td class="r">Nombre<span>*</span></td>
<td class="l"><input type="text" name="nombre" size="43" maxlength="100"></td>
</tr>
<tr>
<td class="r">Apellidos<span>*</span></td>
<td class="l"><input type="text" name="apellidos" size="43" maxlength="100"></td>
</tr>
<tr>
<td class="r">Empresa<span>*</span></td>
<td class="l"><input type="text" name="empresa" size="43" maxlength="100"></td>
</tr>
<tr>
<td class="r">Cargo</td>
<td class="l"><input type="text" name="cargo" size="43" maxlength="100"></td>
</tr>
<tr>
<td class="r">Dirección<span>*</span></td>
<td class="l"><input type="text" name="direccion" size="43" maxlength="100"></td>
</tr>
<tr>
<td class="r">Código postal<span>*</span></td>
<td class="l"><input type="text" name="cp" size="5" maxlength="5"></td>
</tr>
<tr>
<td class="r">Teléfono</td>
<td class="l"><input type="text" name="tlf" size="9" maxlength="9"></td>
</tr>
<tr>
<td class="r">e-mail</td>
<td class="l"><input type="text" name="mail" size="43" maxlength="100"></td>
</tr>
<tr>
<td colspan="2" class="nota"><span>*</span>Datos obligatorios para la recepción del catálogo</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="button" value="Enviar" onClick="valida_envia()" class="boton"></td>
</tr>
</table>
</form>
<div id="close"><a href="javascript: self.close ()">Cerrar ventana</a></div>
</div>
</body>
</html>
Código PHP:
<?
$nombre = $_POST["nombre"];
$apellidos = $_POST["apellidos"];
$empresa = $_POST["empresa"];
$cargo = $_POST["cargo"];
$direccion = $_POST["direccion"];
$cp = $_POST["cp"];
$tlf = $_POST["tlf"];
$mail = $_POST["mail"];
if (($nombre == "") || ($apellidos == "") || ($empresa == "") || ($direccion == "") || ($cp == "")) {
header("Location: formulario.htm");
exit;
}
$msg = "ESTOS SON LOS DATOS RECIBIDOS:\n";
$msg .= "Nombre: $nombre\n";
$msg .= "Apellidos: $apellidos\n";
$msg .= "Cargo: $cargo\n\n";
$msg .= "Dirección: $direccion\n\n";
$msg .= "Código postal: $cp\n\n";
$msg .= "Teléfono: $tlf\n\n";
$msg .= "E-Mail: $mail\n\n";
$to = "[email protected]";
$subject = "$nombre, solicita más información";
$mailheaders = "From: $mail\n";
$mailheaders .= "Reply-To: $mail\n\n";
mail($to, $subject, $msg, $mailheaders);
?>
<html>
<head>
<title>Envio Email</title>
</head>
<body>
<H1>El siguiente Email ha sido enviado con los siguientes datos:</H1>
<p><strong>Nombre:</strong><br>
<? echo "$nombre"; ?>
<p><strong>Apellidos:</strong><br>
<? echo "$apellidos"; ?>
<p><strong>Empresa:</strong><br>
<? echo "$empresa"; ?>
<p><strong>Cargo:</strong><br>
<? echo "$cargo"; ?>
<p><strong>Código postal:</strong><br>
<? echo "$cp"; ?>
<p><strong>Teléfono:</strong><br>
<? echo "$tlf"; ?>
<p><strong>Tu Email:</strong><br>
<? echo "$mail"; ?>
</body>
</html>
Muchisimas gracias, me está ayudando mucho.