Foros del Web » Programando para Internet » PHP »

PHP OO Formulario en php

Estas en el tema de Formulario en php en el foro de PHP en Foros del Web. Hola, soy nuevo en el tema de formularios de contacto, utilice un formulario en html con php y le agregue unas validaciones en nombre y ...
  #1 (permalink)  
Antiguo 29/12/2011, 23:44
 
Fecha de Ingreso: diciembre-2011
Mensajes: 7
Antigüedad: 12 años, 4 meses
Puntos: 0
Formulario en php

Hola, soy nuevo en el tema de formularios de contacto, utilice un formulario en html con php y le agregue unas validaciones en nombre y mail, me tira el mensaje de "Faltan campos por llenar!!" pero el formulario igual manda la informacion hacia el mail. ¿que tengo que hacer para que solamente mande la información cuando el usuario complete los campos obligatorios "nombre" y "mail"?.
Todo lo demas funciona super bien.
Aca les copio el PHP, y gracias al que pueda ayudarme.

<?php

$EmailFrom = "[email protected]";
$EmailTo = "[email protected]";
$Subject = "ANDES/HOTEL formulario contacto";
$nombre = Trim(stripslashes($_POST['nombre']));
$pais = Trim(stripslashes($_POST['pais']));
$pasajeros = Trim(stripslashes($_POST['adultos']));
$pasajeros = Trim(stripslashes($_POST['ninos']));
$llegada = Trim(stripslashes($_POST['llegada']));
$salida = Trim(stripslashes($_POST['salida'])) ;
$tipo_caba = Trim(stripslashes($_POST['tipo_caba']));
$fono = Trim(stripslashes($_POST['fono']));
$mail = Trim(stripslashes($_POST['mail']));
$comentarios = Trim(stripslashes($_POST['comentarios']));


// validation
$validationOK=true;
if (!$validationOK) {
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
exit;
}

// prepare email body text
$Body = "";
$Body .= "nombre: ";
$Body .= $nombre;
$Body .= "\n";

$Body .= "pais: ";
$Body .= $pais;
$Body .= "\n";

$Body .= "adultos: ";
$Body .= $adultos;
$Body .= "\n";

$Body .= "niños: ";
$Body .= $ninos;
$Body .= "\n";

$Body .= "llegada: ";
$Body .= $llegada;
$Body .= "\n";

$Body .= "salida: ";
$Body .= $salida;
$Body .= "\n";

$Body .= "tipo cabaña: ";
$Body .= $tipo_caba;
$Body .= "\n";

$Body .= "fono: ";
$Body .= $fono;
$Body .= "\n";

$Body .= "mail: ";
$Body .= $mail;
$Body .= "\n";

$Body .= "comentarios: ";
$Body .= $comentarios;
$Body .= "\n";



// send email
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page
if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=gracias.html\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}

if($mail==NULL|$nombre==NULL) {
?>
<script>
alert("faltan campos por llenar!");
location.href="contacto.html";//pagina donde esta tu formulario
</script>
  #2 (permalink)  
Antiguo 30/12/2011, 02:20
 
Fecha de Ingreso: agosto-2011
Ubicación: España
Mensajes: 445
Antigüedad: 12 años, 8 meses
Puntos: 89
Respuesta: Formulario en php

if($mail==NULL|$nombre==NULL) {

En esta línea tienes un error no es | sino || o OR.
  #3 (permalink)  
Antiguo 30/12/2011, 10:12
 
Fecha de Ingreso: diciembre-2011
Mensajes: 7
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Formulario en php

Arkaitz, gracias por tu correción pero me ocurre lo mismo, todo me funciona todo bien, pero al apretar el boton enviar igual me envia el formulario sin estar completo los campos obligatorios, cual será el problema?

Este es la dirección web: www.andeshotel.cl/contacto.html
Aca les copio el PHP completo:

<?php

$EmailFrom = "[email protected]";
$EmailTo = "[email protected]";
$Subject = "ANDES/HOTEL formulario contacto";
$nombre = Trim(stripslashes($_POST['nombre']));
$pais = Trim(stripslashes($_POST['pais']));
$pasajeros = Trim(stripslashes($_POST['adultos']));
$pasajeros = Trim(stripslashes($_POST['ninos']));
$llegada = Trim(stripslashes($_POST['llegada']));
$salida = Trim(stripslashes($_POST['salida'])) ;
$tipo_caba = Trim(stripslashes($_POST['tipo_caba']));
$fono = Trim(stripslashes($_POST['fono']));
$mail = Trim(stripslashes($_POST['mail']));
$comentarios = Trim(stripslashes($_POST['comentarios']));


// validation
$validationOK=true;
if (!$validationOK) {
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
exit;
}

// prepare email body text
$Body = "";
$Body .= "nombre: ";
$Body .= $nombre;
$Body .= "\n";

$Body .= "pais: ";
$Body .= $pais;
$Body .= "\n";

$Body .= "adultos: ";
$Body .= $adultos;
$Body .= "\n";

$Body .= "niños: ";
$Body .= $ninos;
$Body .= "\n";

$Body .= "llegada: ";
$Body .= $llegada;
$Body .= "\n";

$Body .= "salida: ";
$Body .= $salida;
$Body .= "\n";

$Body .= "tipo cabaña: ";
$Body .= $tipo_caba;
$Body .= "\n";

$Body .= "fono: ";
$Body .= $fono;
$Body .= "\n";

$Body .= "mail: ";
$Body .= $mail;
$Body .= "\n";

$Body .= "comentarios: ";
$Body .= $comentarios;
$Body .= "\n";



// send email
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page
if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=gracias.html\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}

if(email==NULL||$fono==NULL) {
?>
<script>
alert("faltan campos por llenar!");
location.href="contacto.html";//pagina donde esta tu formulario
</script>

<?php
}
if (!preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/", $mail)) {
exit('El formato del email ingresado no es correcto.');
}
  #4 (permalink)  
Antiguo 30/12/2011, 10:35
 
Fecha de Ingreso: agosto-2011
Ubicación: España
Mensajes: 445
Antigüedad: 12 años, 8 meses
Puntos: 89
Respuesta: Formulario en php

Código PHP:
Ver original
  1. <?php
  2.  
  3.  $EmailFrom = "[email protected]";
  4.  $EmailTo = "[email protected]";
  5.  $Subject = "ANDES/HOTEL formulario contacto";
  6.  $nombre = Trim(stripslashes($_POST['nombre']));
  7.  $pais = Trim(stripslashes($_POST['pais']));
  8.  $pasajeros = Trim(stripslashes($_POST['adultos']));
  9.  $pasajeros = Trim(stripslashes($_POST['ninos']));
  10.  $llegada = Trim(stripslashes($_POST['llegada']));
  11.  $salida = Trim(stripslashes($_POST['salida'])) ;
  12.  $tipo_caba = Trim(stripslashes($_POST['tipo_caba']));
  13.  $fono = Trim(stripslashes($_POST['fono']));
  14.  $mail = Trim(stripslashes($_POST['mail']));
  15.  $comentarios = Trim(stripslashes($_POST['comentarios']));
  16.  
  17.  
  18.  // validation
  19.  $validationOK=true;
  20.  if (!$validationOK) {
  21.  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
  22.  exit;
  23.  }
  24.  
  25.  // prepare email body text
  26.  $Body = "";
  27.  $Body .= "nombre: ";
  28.  $Body .= $nombre;
  29.  $Body .= "\n";
  30.  
  31.  $Body .= "pais: ";
  32.  $Body .= $pais;
  33.  $Body .= "\n";
  34.  
  35.  $Body .= "adultos: ";
  36.  $Body .= $adultos;
  37.  $Body .= "\n";
  38.  
  39.  $Body .= "niños: ";
  40.  $Body .= $ninos;
  41.  $Body .= "\n";
  42.  
  43.  $Body .= "llegada: ";
  44.  $Body .= $llegada;
  45.  $Body .= "\n";
  46.  
  47.  $Body .= "salida: ";
  48.  $Body .= $salida;
  49.  $Body .= "\n";
  50.  
  51.  $Body .= "tipo cabaña: ";
  52.  $Body .= $tipo_caba;
  53.  $Body .= "\n";
  54.  
  55.  $Body .= "fono: ";
  56.  $Body .= $fono;
  57.  $Body .= "\n";
  58.  
  59.  $Body .= "mail: ";
  60.  $Body .= $mail;
  61.  $Body .= "\n";
  62.  
  63.  $Body .= "comentarios: ";
  64.  $Body .= $comentarios;
  65.  $Body .= "\n";
  66.  
  67.  
  68.  
  69.  // send email
  70.  $success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");
  71.  
  72.  // redirect to success page
  73.  if ($success){
  74.  print "<meta http-equiv=\"refresh\" content=\"0;URL=gracias.html\">";
  75.  }
  76.  else{
  77.  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
  78.  }
  79.  
  80.  if(email==NULL||$fono==NULL) {
  81.  ?>
  82.  <script>
  83.  alert("faltan campos por llenar!");
  84.  location.href="contacto.html";//pagina donde esta tu formulario
  85.  </script>
  86.  
  87.  <?php
  88.  }
  89.  if (!preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/", $mail)) {
  90.  exit('El formato del email ingresado no es correcto.');
  91.  }

El if de la línea 80 debería estar antes de la línea 70 que es donde envías el mail. El código lo interpreta de arriba a abajo por eso envía el mail y luego te dice que hay campos por llenar.

y en la línea 80 sería:
Código PHP:
Ver original
  1. if ($email == NULL || $fono == NULL){
  #5 (permalink)  
Antiguo 30/12/2011, 11:10
 
Fecha de Ingreso: diciembre-2011
Mensajes: 7
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Formulario en php

Comprade Arkaitz, pruebo los cambios y hago otras pruebas y nada, sigue igual. Al apretar el botón enviar manda el formulario sin los campos completados. Asi quedo el PHP final.

<?php

$EmailFrom = "[email protected]";
$EmailTo = "[email protected]";
$Subject = "ANDES/HOTEL formulario contacto";
$nombre = Trim(stripslashes($_POST['nombre']));
$pais = Trim(stripslashes($_POST['pais']));
$pasajeros = Trim(stripslashes($_POST['adultos']));
$pasajeros = Trim(stripslashes($_POST['ninos']));
$llegada = Trim(stripslashes($_POST['llegada']));
$salida = Trim(stripslashes($_POST['salida'])) ;
$tipo_caba = Trim(stripslashes($_POST['tipo_caba']));
$fono = Trim(stripslashes($_POST['fono']));
$mail = Trim(stripslashes($_POST['mail']));
$comentarios = Trim(stripslashes($_POST['comentarios']));


// validation
$validationOK=true;
if (!$validationOK) {
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
exit;
}

// prepare email body text
$Body = "";
$Body .= "nombre: ";
$Body .= $nombre;
$Body .= "\n";

$Body .= "pais: ";
$Body .= $pais;
$Body .= "\n";

$Body .= "adultos: ";
$Body .= $adultos;
$Body .= "\n";

$Body .= "niños: ";
$Body .= $ninos;
$Body .= "\n";

$Body .= "llegada: ";
$Body .= $llegada;
$Body .= "\n";

$Body .= "salida: ";
$Body .= $salida;
$Body .= "\n";

$Body .= "tipo cabaña: ";
$Body .= $tipo_caba;
$Body .= "\n";

$Body .= "fono: ";
$Body .= $fono;
$Body .= "\n";

$Body .= "mail: ";
$Body .= $mail;
$Body .= "\n";

$Body .= "comentarios: ";
$Body .= $comentarios;
$Body .= "\n";

if($mail==NULL||$fono==NULL);

// send email
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page
if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=gracias.html\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}

?>
<script>
alert("faltan campos por llenar!");
location.href="contacto.html";//pagina donde esta tu formulario
</script>

<?php

if (!preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/", $mail)) {
exit('El formato del email ingresado no es correcto.');
}

?>
  #6 (permalink)  
Antiguo 30/12/2011, 11:18
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Formulario en php

Cita:
if($mail==NULL||$fono==NULL);

// send email
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page
if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=gracias.html\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}

?>
<script>
alert("faltan campos por llenar!");
location.href="contacto.html";//pagina donde esta tu formulario
</script>

<?php

if (!preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/", $mail)) {
exit('El formato del email ingresado no es correcto.');
}

?>
y si compruebas y luego mandas?? tu mandas y luego compruebas , tambien estas diciendo a php que si mail es igual a NULL mande el email

if(email==NULL){

aqui si es null

}else{

aqui si llego algo , y si llego enviamos email o podemos seguir comprobando campos y al final mandamos email

}

tambie puedes verificarlo con empty

if(empty($email)){

error , llego vacio

}

Última edición por webankenovi; 30/12/2011 a las 11:26
  #7 (permalink)  
Antiguo 30/12/2011, 11:39
Avatar de mike28gt  
Fecha de Ingreso: abril-2010
Mensajes: 56
Antigüedad: 14 años
Puntos: 14
Respuesta: Formulario en php

Hola, creo que tu código esta un poco desordenado, a mi juicio de esta forma debería de funcionarte:

Código PHP:
<?php
 
 $EmailFrom 
"[email protected]";
 
$EmailTo "[email protected]";
 
$Subject "ANDES/HOTEL formulario contacto";
 
$nombre Trim(stripslashes($_POST['nombre']));
 
$pais Trim(stripslashes($_POST['pais']));
 
$pasajeros Trim(stripslashes($_POST['adultos']));
 
$pasajeros Trim(stripslashes($_POST['ninos']));
 
$llegada Trim(stripslashes($_POST['llegada']));
 
$salida Trim(stripslashes($_POST['salida'])) ;
 
$tipo_caba Trim(stripslashes($_POST['tipo_caba']));
 
$fono Trim(stripslashes($_POST['fono']));
 
$mail Trim(stripslashes($_POST['mail']));
 
$comentarios Trim(stripslashes($_POST['comentarios']));
 
 
// prepare email body text
 
$Body "";
 
$Body .= "nombre: ";
 
$Body .= $nombre;
 
$Body .= "\n";
 
 
$Body .= "pais: ";
 
$Body .= $pais;
 
$Body .= "\n";
 
 
$Body .= "adultos: ";
 
$Body .= $adultos;
 
$Body .= "\n";
 
 
$Body .= "niños: ";
 
$Body .= $ninos;
 
$Body .= "\n";
 
 
$Body .= "llegada: ";
 
$Body .= $llegada;
 
$Body .= "\n";
 
 
$Body .= "salida: ";
 
$Body .= $salida;
 
$Body .= "\n";
 
 
$Body .= "tipo cabaña: ";
 
$Body .= $tipo_caba;
 
$Body .= "\n";
 
 
$Body .= "fono: ";
 
$Body .= $fono;
 
$Body .= "\n";
 
 
$Body .= "mail: ";
 
$Body .= $mail;
 
$Body .= "\n";
 
 
$Body .= "comentarios: ";
 
$Body .= $comentarios;
 
$Body .= "\n";
 
 
//Valida que el mail y que el fono no sean nulos
 
if(email==NULL||$fono==NULL) {
 
?>
 <script>
 alert("faltan campos por llenar!");
 location.href="contacto.html";//pagina donde esta tu formulario
 </script>
 
 <?php
 
}
 
//Valida el formato correcto del correo electronico
 
else  if (!preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/"$mail)) {
 exit(
'El formato del email ingresado no es correcto.');
 }
 
// Si el valor de mail no es nulo y el fono no se nulo y el formato de correo es correcto, envia el correo electronico.
 
else
 {
    
// send email 
    
$success mail($EmailTo$Subject$Body"From: <$EmailFrom>");
     
    
// redirect to success page 
    
if ($success){
    print 
"<meta http-equiv=\"refresh\" content=\"0;URL=gracias.html\">";
    }
    else{
    print 
"<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
    }
 }
 
?>
Esta parte la quite, no le encontre lógica entre lo que mostrabas:

Código PHP:
// validation
$validationOK=true;
if (!
$validationOK) {
print 
"<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
exit;

Espero haberte podido ayudar.
  #8 (permalink)  
Antiguo 30/12/2011, 18:35
 
Fecha de Ingreso: diciembre-2011
Mensajes: 7
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Formulario en php

GRACIAS mike28gt y a todos que ayudaron, me resulto a la perfección tus correciones, se agradece y saludos a todos.

Etiquetas: formulario, html, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:56.