Comunidad de diseño web y desarrollo en internet online

Formulario en blanco (Jquery - PHP)

Citar            
MensajeEscrito el 20 Sep 2013 12:03 pm
Hola tengo un problema con un un formulario,
a ver si alguien me puede ayudar porfavor
He hecho un formulario con Jquery y con PHP.
el problema es que cada vez que alguien entra en la página sin validar, el mensaje se envía igual. entonces recibimos un montón de mensajes en blanco.
Yo creo que es en el submit o en onclick del html pero no logro encontrar!!

pongo los siguientes códigos para ver:

Código HTML :

<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body><div id="popup" style="display: none;">
 <div class="content-popup">
        <div class="close"><a href="#" id="close"><img src="img_icones/close.png" border="0"></a></div>
        
<div class="resaltado">SUSCRIPCIÓN A LA NEWSLETTER</div>
      <form action="00-news/envio-news-esp.php" method="post" id="contacto" onsubmit="return validarNewsletter();">
        <br />
<span class="formulario">Nombre* </span><br /><input name="nombre" type="text"  id="nombre" size="32" maxlength="64" /></span> <br />
<span class="formulario">Empresa* </span><br /><input name="empresa" type="text" id="empresa" size="32" maxlength="64" /> <br />
<span class="formulario">País* </span><br /><input name="pais" type="text" id="pais" size="32" maxlength="64" />  <br />
<span class="formulario">E&ndash;mail* </span><br /><input name="email" type="text" id="email" size="32" maxlength="64" />  <br/>   <br />
<input type="checkbox" value="transfer" name="transfer" id="transfer" /><label for="transfer" class="formulario">TRANSFER DE PRENSAS</label><br />
<input type="checkbox" value="garras" name="garras" id="garras"/><label for="garras" class="formulario">GARRAS DE ROBOT</label> <br />
<input type="checkbox" value="sujecion" name="sujecion" id="sujecion" /><label for="sujecion" class="formulario">BRIDAS DE SUJECIÓN</label> 

 <input name="borrar" type="reset" class="boton" id="borrar" value="Borrar" />
  <input name="button" type="submit" id="button" value="Enviar" onclick="Enviar validarNewsletter();"/>
</label>
   <br /></form></div></div>
</body>
</html>




Código Javascript :

function validarNewsletter() { //v4.0

    var nombre = $("#nombre").val();
    if (nombre == "") {
        alert("Nombre es un dato necesario");
        $("#nombre").focus();
        return false;
    }
      var empresa = $("#empresa").val();
    if (empresa == "") {
        alert("Empresa es un dato necesario");
        $("#empresa").focus();
        return false;
    }
      var pais = $("#pais").val();
    if (pais == "") {
        alert("Pais es un dato necesario");
        $("#pais").focus();
        return false;
    }

    var email = $("#email").val();
    if (email == "") {
        alert("Email es un dato necesario");
        $("#email").focus();
        return false;
    }

    if (ParseEmail(email) == false) {
        alert("Email con formato incorrecto");
        $("#email").focus();
        return false;
    }

    return true;
}
function ParseEmail(cadena) {
    if (cadena.lastIndexOf('.') == -1) {
        return false; //no tiene puntos
    }
    var ArrDom = new Array("es", "com", "net", "edu", "info", "cat", "tv", "uk", "fr", "org", "cat", "be");
    var SufixDom = cadena.substring(cadena.lastIndexOf('.') + 1, cadena.length);
    var DomOk = true;
    for (i = 0; i < ArrDom.length; i = i + 1) {
        if (SufixDom == ArrDom[i]) { DomOk = true; }
    }
    if (!DomOk) return false; //El dominio no esta en la lista
    if (cadena.search('@') == -1) {
        return false; //no hay ningun @
    }
    if (cadena.indexOf('@') != cadena.lastIndexOf('@')) {
        return false; //hay mas de una @
    }
    if (cadena.indexOf('@') == 0) {
        return false; // @ en primer lugar
    }
    if (cadena[cadena.indexOf('@') - 1] == '.' || cadena[cadena.indexOf('@') + 1] == '.') {
        return false; // puntos pegados en el @
    }
    for (i = 0; i < cadena.length; i++) {
        var caracter = cadena.charAt(i);
        if (!((caracter >= 'a' && caracter <= 'z') ||
         (caracter >= 'A' && caracter <= 'Z') ||
         (caracter >= '0' && caracter <= '9') ||
         caracter == '.' || caracter == '-' ||
         caracter == '@' || caracter == '_')) {
            return false;
        }
    }
    return true;
}


Código PHP :

<?php

$to = "[email protected]";
$subject = "Newsletter-nova";

$msg = "Newsletter-esp\n Un usuario solicita información de newsletters:\n";

$msg .= "Nombre: $_POST[nombre]\n";
$msg .= "Empresa: $_POST[empresa]\n";
$msg .= "Pais: $_POST[pais]\n";
$msg .= "E-Mail: $_POST[email]\n";

$msg .= "Type: $_POST[transfer]\n";
$msg .= "Type: $_POST[garras]\n";
$msg .= "Type: $_POST[sujecion]\n";


$error = array(00123,00124,00125,00126,00127,00234,00256);

$mailheaders = "From: Formulario web <[email protected]> \n";

mail($to, $subject, $msg, $mailheaders);

?>

Por les2013

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Sep 2013 12:24 pm
Del lado del servidor no estas validando nada...

Saludos!

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox
Citar            
MensajeEscrito el 20 Sep 2013 12:34 pm
Bueno, veo varios problemas con todo esto.

El hecho que se envíe el formulario se debe a que tienes un error de Javascript. En el evento onclick del <input> submit tienes una cadena "Enviar" que no es código Javascript. Además estás llamado dos veces a la función validarNewsletter(), una en ese onclick y la otra en el evento submit del formulario.

Por otro lado la validación de los campos es como mínimo sospechosa.
El visitante puede poner un espacio en blanco en los campos del formulario y pasa la validación.

Admiro el trabajo que te has tomado para validad una dirección de correo... pero está mal ;). Puedes poner una dirección tal como "[email protected]" y pasa la validación, sin embargo esa dirección es inválida (el dominio no puede tener un solo carácter, así como el TLD tampoco). Mientras que esta dirección "[email protected]" no pasa la validación pero es perfectamente legal.

(Disculpa el detallismo pero es que tengo debilidad por los formularios...)

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 26 Sep 2013 09:14 am
Ok, es que soy nueva con los formularios y me cuesta un poco.
(Si, Lo que puse Javascript es un Jquery)

O sea borro el onclick, queda de la siguiente forma.
<input name="button" type="submit" id="button" value="Enviar"/>

¿Y de la forma en como está no recibiré formularios en blanco?

Lo del correo lo tenia más "restringido" pero como es internacional, al final lo he borrado para que entren todas las terminaciones.

muchas gracias

Por les2013

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Sep 2013 09:32 am
Haa!!! ya veo sobra el <value="Enviar"/>
¿Y si quiero que el botón enviar consulta salga en inglés?

Por les2013

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Sep 2013 12:19 pm

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 27 Sep 2013 06:19 am
Quería decir que cada vez que alguien visita la página del formulario, recibo el formulario en blanco aunque no lo validen.
Recibo el formulario tanto si escriben como si no .

Gracias por la web

Por les2013

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Sep 2013 12:06 pm
¿Dónde está colgado esto?, ¿podemos verlo?

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 30 Sep 2013 10:45 am

Por les2013

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Sep 2013 12:44 pm
No veo ningún problema del lado del cliente.

¿Cómo estás haciendo el orden de llamadas de archivos en cada paso?.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 01 Oct 2013 09:37 am
No entiendo muy bien la pregunta...

- Hay el Jquery que marca el error,
- html el formulario
- el PHP que envia la respuesta

¿podría ser que el html y el php den algún conflicto?


<?php

$to = "[email protected]";
$subject = "Newsletter-nova";

$msg = "Newsletter-esp\n Un usuario solicita información de newsletters:\n";

$msg .= "Nombre: $_POST[nombre]\n";
$msg .= "Empresa: $_POST[empresa]\n";
$msg .= "Pais: $_POST[pais]\n";
$msg .= "E-Mail: $_POST[email]\n";

$msg .= "Type: $_POST[transfer]\n";
$msg .= "Type: $_POST[garras]\n";
$msg .= "Type: $_POST[sujecion]\n";


$error = array(00123,00124,00125,00126,00127,00234,00256);

$mailheaders = "From: Formulario web <[email protected]> \n";

mail($to, $subject, $msg, $mailheaders);

?>

Por les2013

3 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.