Foros del Web » Programando para Internet » PHP »

Problema validando envio de correo con función mail

Estas en el tema de Problema validando envio de correo con función mail en el foro de PHP en Foros del Web. Hola. Estoy haciendo pruebas en un formulario donde trato de validar dos campos (uno el nombre comercial y otro la casilla de verificación de condiciones) ...
  #1 (permalink)  
Antiguo 03/06/2011, 21:52
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Problema validando envio de correo con función mail

Hola.

Estoy haciendo pruebas en un formulario donde trato de validar dos campos (uno el nombre comercial y otro la casilla de verificación de condiciones) y me gustaría que el email solo se enviase si las dos casillas estuviesen completas.

El formulario que pruebo es este:

Código HTML:
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" id="formulario-contacto" class="formulario-contratar-online">
                <fieldset class="fieldset-formulario-contratar-online">
                <legend class="legend-formulario-contratar-online">Rellene los siguientes campos</legend>
                <!--<div class="etiquetas-formulario">-->
                <label for="nombrecomercial">* Nombre comercial:<br />  
                <input type="text" id="nombrecomercial" name="nombrecomercial" value="<?php if(isset($_POST['nombrecomercial']) && $_POST['nombrecomercial'] == "") {echo "Incompleto";} else {echo $_POST['nombrecomercial'];} ?>" size="40" />
                </label><br />                                
                <label for="condiciones-contratacion" class="label-condiciones-contratacion"><input type="checkbox" name="condiciones" <?php if (isset($_POST['condiciones']) && $_POST['condiciones'] != "") { echo  " checked='checked'"; }?>      
                 />               
                  <a href="politica-de-privacidad.php" class="condiciones-contratacion">He leído la política de privacidad</a><a href="#" class="condiciones-contratacion">y</a></span><a href="/condiciones-de-uso.php" class="condiciones-contratacion">acepto las condiciones de uso.</a>                     
                  </label>
                <div id="enviar-formulario-contratar-online">
                <input type="submit" value="Enviar" class="boton-enviar" name="enviar" /><br />
                <span class="nota-formulario">* Campo requerido</span>
                </div>                
            	</fieldset>
        	</form> 
y el código php que utilizo este:

Código PHP:
Ver original
  1. <?php              
  2.             if(isset($_POST['enviar']))
  3.                 {  
  4.                     if ($_POST['condiciones'] == "") { echo  "Marque las condiciones<br>"; }
  5.                     elseif ($_POST['condiciones'] != "")
  6.                     {echo  "Condiciones aceptadas<br>";}
  7.                     if ($_POST['nombrecomercial'] == "Incompleto" or $_POST['nombrecomercial'] == "")
  8.                     {echo "Rellene el nombre comercial <br />";}   
  9.                     else {     
  10.                     //------------------ Aquí preparo la función mail          
  11.                     $para  = '[email protected]';
  12.                     // asunto
  13.                     $asunto = 'Formulario de contacto GDT';
  14.                     // mensaje
  15.                     $mensaje = "Nombre comercial: " .$_POST['nombrecomercial']. "\n";                   ;                      
  16.                     // Enviarlo
  17.                     mail($para, $asunto, $mensaje, $cabaceras); }                                                          
  18.                 }              
  19.             ?>

Si envio el correo con el nombre comercial completo se envia, pero si tiene la casilla ['condiciones'] desactivada también.

¿Como puedo hacer que solo se envíe con las dos casillas rellenas?

Saludos.

Última edición por kahlito; 03/06/2011 a las 22:26 Razón: Código nuevo
  #2 (permalink)  
Antiguo 03/06/2011, 22:09
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Problema validando envio de correo con función mail

simple:

si ( nombre_comercial != "" AND condiciones == ON) entonces: envía //psudocode
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 03/06/2011, 22:32
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Problema validando envio de correo con función mail

Hola maycolalvarez.

He probado varias opciones gracias a tu recomendación, sin embargo no logro arreglarlo:

Código PHP:
Ver original
  1. <?php              
  2.    if(isset($_POST['enviar']))
  3.    {  
  4.    if ($_POST['condiciones'] == "") { echo  "Marque las condiciones<br>"; }
  5.    elseif ($_POST['condiciones'] != "")
  6.    {echo  "Condiciones aceptadas<br>";}
  7.    if ($_POST['nombrecomercial'] == "Incompleto" or $_POST['nombrecomercial'] == "")
  8.    {echo "Rellene el nombre comercial <br />";}    
  9.    elseif($_POST['nombrecomercial'] != "Incompleto" or $_POST['nombrecomercial'] != "" and $_POST['condiciones'] == "ON") {        
  10.     //------------------ Aquí preparo la función mail          
  11.     $para  = '[email protected]';
  12.     // asunto
  13.     $asunto = 'Formulario de contacto';
  14.     // mensaje
  15.     $mensaje = "Nombre comercial: " .$_POST['nombrecomercial']. "\n";                      
  16.     // Enviarlo
  17.     mail($para, $asunto, $mensaje, $cabaceras); }                                                          
  18.      }              
  19.  ?>

También he probado en esa linea con estas dos maneras pero tampoco:

Código PHP:
Ver original
  1. elseif($_POST['nombrecomercial'] != "Incompleto" or $_POST['nombrecomercial'] != "" and $_POST['condiciones'] == "on")

o así:

Código PHP:
Ver original
  1. elseif($_POST['nombrecomercial'] != "Incompleto" or $_POST['nombrecomercial'] != "" and $_POST['condiciones'] != "")

Saludos.
  #4 (permalink)  
Antiguo 03/06/2011, 22:52
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Problema validando envio de correo con función mail

Te acaban de decir que uses and nada más, hasta ejemplo te pusieron
Además, te recomiendo usar mejor && y || respecticamente, entonces, usa &&
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #5 (permalink)  
Antiguo 03/06/2011, 23:21
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Problema validando envio de correo con función mail

Hola.

Pues sí era eso, me sobraba el or de "Incompleto" y solo debía dejar un and o &&. Así me sirve

Código PHP:
elseif($_POST['nombrecomercial'] != "" && $_POST['condiciones'] != ""
Gracias maycolalvarez y Sourcegeek por la ayuda

Etiquetas: correo, envio, mail, validador
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 20:00.