Hola a todos, posteo esto aqui porque creo que es el Jscript el que falla, pero si es es el php muevelo por favor...
Tengo un pequeño problema, es el que sigue.
Estoy haciendo un formulario que envie los campos a una direccion de correo definida, mediante php.
Lo que hago es verificar con un javascript que los campos no estén vacios, que el mail contenga la arroba (me queda quitar el codigo malicioso < y > entre otros...)... y que si todo está ok lo mande al correo.
El problema es que si dejo algún campo vacio el js me informa mediante un alert -tal y como tiene qeu hacer- pero en vez de parar el proceso, manda el correo.
Tengo 3 documentos:
el formulario va en contacto.php
<form method="post" action="envio.php" id="contacto" name="contacto">
<table width="258" height="290" align="center">
<tr>
<td width="124">Nombre:</td>
<td width="122"><input type="text" name="nombre" id="nombre" size="10" /></td>
</tr>
<tr>
<td>Apellido:</td>
<td><input type="text" name="apellido" id="apellido" size="10" /></td>
</tr>
<tr>
<td>E-Mail:</td>
<td><input type="text" name="email" id="email" size="10" /></td>
</tr>
<tr>
<td colspan="2"><textarea name="mensaje" cols="30" rows="5" wrap="OFF"></textarea></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="Submit" value="Enviar"onClick="javacript:check_form();"></td>
</tr>
</table>
</form>
como veis es muy sencillo.
el jscript que valida es este:
function check_form()
{
var cont=0;
var err='Para poder atenderle mejor nos es necesario que rellene los siguientes campos:\n\n\n';
if (contacto.nombre.value=='')
{err=err+" Nombre\n";cont=1;}
if (contacto.apellido.value=='')
{err=err+" Apellido\n";cont=1;}
if (contacto.email.value=='')
{err=err+" Correo electrónico\n";cont=1;}
//implementacion: mirar la arroba sólo si el campo mail ha sido rellenado
if ((contacto.email.value!='')&&(contacto.email.value.indexOf("@")==-1))
{err=" su dirección de e-mail no es válida\n"; cont=1;}
//fin verificacion @
if (contacto.mensaje.value=='')
{err=err+" Mensaje\n"; cont=1;}
err=err+"\n\n... disculpe las molestias.";
if (cont==1) alert(err);
else {contacto.submit();}
}
como veis le digo que si hay un error saque un alert -cosa que hace-
y si no (else) que envie el formulario. pero es como si ignorase el else.
por ultimo el documento que procesa el envio del formulario via e-mail.
<?php
session_start();
$mensaje='';
$to="MAIL PERSONAL QUE NO SE VISUALIZA EN LA WEB Y A LA QUE LLEGA EL FORMULARIO";
$subject="Consulta Web";
$mensaje=$mensaje."Nombre: ".$_REQUEST["nombre"]."\n";
$mensaje=$mensaje."Apellido: ".$_REQUEST["apellido"]."\n";
$mensaje=$mensaje."E-mail: ".$_REQUEST["email"]."\n";
$mensaje=$mensaje."\n".$_REQUEST["mensaje"]."\n";
$env=@mail($to,$subject,$mensaje,"From:".$_REQUEST["email"]);
?>
<html>
<head>
<title></title>
<?php
require("icono.php");
require("metatags.php");
require("estilo.php");
require("scripts.php");
?>
</head>
<body marginwidth="0" leftmargin="0" marginheight="0" topmargin="0">
<?php
echo("<!---------------MAIN--------------------------->");
require("top.php");
require("menu.php");
require("barras.php");
?>
<?php if (!$env) {echo("
<div style='position:absolute; left:250; top:400;'>
<table>
<tr height='19px'>
<td><p align='center'>Lamentamos anunciar que su consulta no ha sido enviada</p></td>
<!--td background='../IMG/buttons/ini.jpg' width='3' align='left'></td-->
<td background='../IMG/buttons/med.jpg' width='70' align='center'><a href='main.php?link=contacto'><i>volver atras</i></a></td>
<!--td background='../IMG/buttons/fin.jpg' width='3' align='right'></td-->
</tr>
</table>
</div>
");
}
else{
echo("
<div style='position:absolute; left:250; top:400;'>
<table aling='center'>
<tr height='19px'>
<td><p align='center'>En unos días recibirá respuesta a su consulta. Muchas gracias.</p></td>
<td background='../IMG/buttons/ini.jpg' width='3' align='left'></td>
<td background='../IMG/buttons/med.jpg' width='100' align='center'><a href='main.php?link=inicio'><i>Inicio</i></a></td>
<td background='../IMG/buttons/fin.jpg' width='3' align='right'></td>
</tr>
</table>
</div>
");
}
?>
<?php
require("footer.php");
echo("<!-------------END MAIN----------------------------->");
require("disconnect.php");
?>
</body>
</html>
Bueno gracias por adelantado por las molestias que os estoy causando
y gracias.