Foros del Web » Programando para Internet » PHP »

Problema con envió de formulario

Estas en el tema de Problema con envió de formulario en el foro de PHP en Foros del Web. Buenos días a todos, estoy trabajando con un formulario donde aparte de enviarse a una base de datos también se envía una copia del envió ...
  #1 (permalink)  
Antiguo 28/08/2015, 11:24
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Problema con envió de formulario

Buenos días a todos, estoy trabajando con un formulario donde aparte de enviarse a una base de datos también se envía una copia del envió al usuario que registro.
Todo funciona bien para registrar en la base de datos (omito el código por que es irrelevante) El problema esta al quererlo enviar al correo electrónico del remitente, lo intente con este código solo y solo me arroja el error del IF como si no hubiera completado los campos, pero si los complete y si son los nombres de los campos (incluso se registran bien en la base de datos) ¿alguien que me pueda ayudar echándole un ojo igual y encuentran donde me equivoco. Gracias!

Código PHP:
<?php

  
if(!empty($_POST['name']) AND !empty($_POST['tag']) AND !empty($_POST['email']) AND !empty($_POST['telephone']) AND !empty($_POST['reason'])){

  
$name=iconv("UTF-8""ISO-8859-1",ucwords(strtolower($_POST["name"])));
  
$tag=strtoupper($_POST['tag']);
  
$account=$_POST['account'];
  
$email=strtolower($_POST["email"]);
  
$telephone=$_POST['telephone'];
  
$reason=iconv("UTF-8""ISO-8859-1",ucfirst(strtolower($_POST['reason'])));

  
$resonarray=array(
        
'1' => 'Reclamacion de cargo 1',
        
'2' => 'Reclamacion de cargo 2',
        
'3' => 'Aclaracion de saldo',
        
'4' => 'Recarga no reflejada',
        
'5' => 'Problema en facturacion',
        
'6' => 'Problema con dispositivo',
        
'7' => 'Mala atencion del personal'
    
);

  
$question=iconv("UTF-8""ISO-8859-1",$_POST['question']);
  
$ddate=$_POST['ddate'];
  
$texto=iconv("UTF-8""ISO-8859-1",ucfirst(strtolower($_POST["texto"])));
  
$gender=$_POST['gender'];
  
$age=$_POST['age'];
  
$red=$_POST['red'];
  
$nick=iconv("UTF-8""ISO-8859-1",strtolower($_POST["nick"]));
  
$serial=$_POST['serial'];
  
$status='Pendiente';
  
$realtime date("Y-m-d / H:i:s"); 
  
  
//AQUI COMIENZO A ARMAR EL CORREO
  
$cuestion 'Aclaración folio: ' $serial;
  
$namesender 'Atención a clientes';
  
$mailsender '[email protected]';
  
$carboncopy '[email protected]';
/*
  $carboncopy=array(
        '1' => '[email protected][email protected]',
        '2' => '[email protected][email protected]',
        '3' => '[email protected][email protected]',
        '4' => '[email protected][email protected]',
        '5' => '[email protected][email protected]',
        '6' => '[email protected][email protected]'
    );
*/
  //$body = "MIME-Version: 1.0\n";
  //$body .= "Content-type: text/html; charset=UTF-8\n";
  
$body 'Nombre del usuario: '$name '<br>';
  
$body .= 'Número de TAG: '$tag '<br>';
  
$body .= 'Número seguimiento: '$serial;

  
mail($email,$cuestion,$body,"MIME-Version: 1.0\nContent-type: text/html; charset=UTF-8\nFrom: ".$namesender."<" $mailsender ">\nBcc:".$carboncopy);

  } else {
    echo 
"Error, verifica los campos.";
  }

?>
  #2 (permalink)  
Antiguo 28/08/2015, 11:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con envió de formulario

Cita:
me arroja el error del IF como si no hubiera completado los campos, pero si los complete y si son los nombres de los campos (incluso se registran bien en la base de datos)
Primero una cosa, si ya tienes la validación que te permite ingresar los datos a tu base de datos.

¿Por qué no la usas para esta otra parte?

Cita:
¿alguien que me pueda ayudar echándole un ojo igual y encuentran donde me equivoco.
A lo mejor y si muestras como son las dos comparaciones podríamos ver que haces diferente.

Digo, ¿no esperas a que ejecutemos el código mentalmente así como adivinar incluso cómo es el formulario verdad?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 28/08/2015, 11:41
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema con envió de formulario

Hola es el mismo IF para las 2 acciones, la parte que omito solo es la de la conexión a la base de datos y el INSERT INTO, no entiendo por que si registra en la base de datos pero MAIL no envía. Este es todo el código como vez no debería haber falla.


Código PHP:
<?php

  $bd_host 
"localhost"
  
$bd_usuario "..."
  
$bd_password "..."
  
$bd_base "..."
 
  
$con mysql_connect($bd_host$bd_usuario$bd_password); 
  
mysql_select_db($bd_base$con); 

if(!empty(
$_POST['name']) AND !empty($_POST['tag']) AND !empty($_POST['email']) AND !empty($_POST['telephone']) AND !empty($_POST['reason'])){ 

  
$name=iconv("UTF-8""ISO-8859-1",ucwords(strtolower($_POST["name"]))); 
  
$tag=strtoupper($_POST['tag']); 
  
$account=$_POST['account']; 
  
$email=strtolower($_POST["email"]); 
  
$telephone=$_POST['telephone']; 
  
$reason=iconv("UTF-8""ISO-8859-1",ucfirst(strtolower($_POST['reason']))); 

  
$resonarray=array( 
        
'1' => 'Reclamacion de cargo 1'
        
'2' => 'Reclamacion de cargo 2'
        
'3' => 'Aclaracion de saldo'
        
'4' => 'Recarga no reflejada'
        
'5' => 'Problema en facturacion'
        
'6' => 'Problema con dispositivo'
        
'7' => 'Mala atencion del personal' 
    
); 

  
$question=iconv("UTF-8""ISO-8859-1",$_POST['question']); 
  
$ddate=$_POST['ddate']; 
  
$texto=iconv("UTF-8""ISO-8859-1",ucfirst(strtolower($_POST["texto"]))); 
  
$gender=$_POST['gender']; 
  
$age=$_POST['age']; 
  
$red=$_POST['red']; 
  
$nick=iconv("UTF-8""ISO-8859-1",strtolower($_POST["nick"])); 
  
$serial=$_POST['serial']; 
  
$status='Pendiente'
  
$realtime date("Y-m-d / H:i:s");  
   
  
//AQUI COMIENZO A ARMAR EL CORREO 
  
$cuestion 'Aclaración folio: ' $serial
  
$namesender 'Atención a clientes'
  
$mailsender '[email protected]'
  
$carboncopy '[email protected]'
/* 
  $carboncopy=array( 
        '1' => '[email protected][email protected]', 
        '2' => '[email protected][email protected]', 
        '3' => '[email protected][email protected]', 
        '4' => '[email protected][email protected]', 
        '5' => '[email protected][email protected]', 
        '6' => '[email protected][email protected]
    ); 
*/ 

  
$sql="INSERT INTO aclaracion (...) VALUES ('$...')";
  
mysql_query($sql,$con) or die('Error. '.mysql_error());

  
//$body = "MIME-Version: 1.0\n"; 
  //$body .= "Content-type: text/html; charset=UTF-8\n"; 
  
$body 'Nombre del usuario: '$name '<br>'
  
$body .= 'Número de TAG: '$tag '<br>'
  
$body .= 'Número seguimiento: '$serial

  
mail($email,$cuestion,$body,"MIME-Version: 1.0\nContent-type: text/html; charset=UTF-8\nFrom: ".$namesender."<" $mailsender ">\nBcc:".$carboncopy); 

  } else { 
    echo 
"Error, verifica los campos."
  } 

    
mysql_close($con);

?>
  #4 (permalink)  
Antiguo 28/08/2015, 11:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con envió de formulario

A ver, ¿entonces dices que el if() sí entra y hace el INSERT, pero el mail() ya no?

Eso es completamente ilógico porque ambas instrucciones están dentro del mismo if(), así que el mensaje de error "Error, verifica los campos." no debería mostrarse.

¿Pero dices que se muestra entonces?

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 28/08/2015, 11:46
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema con envió de formulario

Eso es lo que digo, no entiendo por que en uno si y en el otro no. El mensaje de error es cuando corro solo el código sin el INSERT, osea solo para enviar el correo. :/
  #6 (permalink)  
Antiguo 28/08/2015, 11:47
 
Fecha de Ingreso: agosto-2015
Ubicación: chile
Mensajes: 4
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Problema con envió de formulario

ya probaste enviando un mail desde php ? sin todo el resto de codigo solo la funcion mail y ya ?,
debieras tener parte de conexión a un servidor smtp para enviar mail. php solo no envia mail
  #7 (permalink)  
Antiguo 28/08/2015, 11:48
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema con envió de formulario

Si ya lo intente Ser_Gio, incluso sin el IF, sin el IF no lo envía tampoco.
  #8 (permalink)  
Antiguo 28/08/2015, 11:55
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con envió de formulario

Cita:
El mensaje de error es cuando corro solo el código sin el INSERT, osea solo para enviar el correo. :/
Pues lo siento mucho por decirlo así pero es lo que es: una tontería.

No hay razón en el mundo para que, comentando o quitando una linea de código altere todo el comportamiento previo del script.

¿Por qué?

Porque el if() se evalúa primero, entonces siempre será igual sin importar lo que coloques dentro del mismo bloque, aún así sean muchas o pocas operaciones.

¿Por que no mejor depurar las variables que recibes al momento del error?

Código PHP:
Ver original
  1. echo "Error, verifica los campos.";
  2. var_dump($_POST);

¿Vienen ahí tus datos o no?

Cita:
Si ya lo intente Ser_Gio, incluso sin el IF, sin el IF no lo envía tampoco.
¿Ya leíste el manual de mail() o no?

Te recuerdo que PHP no es un servidor de correo, así que si tu sistema no cuenta con servicio de SMTP propiamente configurado invocar mail() no sirve de nada.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 28/08/2015, 11:58
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema con envió de formulario

Esto me arroja.

Cita:
Error, verifica los campos.array(11) { ["serial"]=> string(10) "6ZeZZ9ZM1C" ["name"]=> string(0) "" ["tag"]=> string(0) "" ["email"]=> string(0) "" ["telephone"]=> string(0) "" ["reason"]=> string(1) "0" ["question"]=> string(19) " Elegir opción... " ["ddate"]=> string(0) "" ["texto"]=> string(0) "" ["age"]=> string(0) "" ["nick"]=> string(0) "" }
  #10 (permalink)  
Antiguo 28/08/2015, 12:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con envió de formulario

Pues ahí tienes, los campos sí vienen vacíos.

¿Y si haces el var_dump() cuando haces el INSERT muestra lo mismo?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 28/08/2015, 12:04
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema con envió de formulario

Lo curioso es que no están vacíos, por que hago una validación a nivel cliente primerio y pues los completo antes de enviarlos. con el INSERT si hago los registros en la base de datos.
  #12 (permalink)  
Antiguo 28/08/2015, 12:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con envió de formulario

Pues has varios var_dump(), antes y después del if(), etc.

Tienes que depurar tu código a mano.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 28/08/2015, 14:11
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema con envió de formulario

Pues siendo honesto no he podido, no con _POST ni con _GET, ya descompuse todo el código y nada, lo curioso es que no recibo datos de solo algunos campos, de otros si.
  #14 (permalink)  
Antiguo 28/08/2015, 14:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con envió de formulario

Cita:
lo curioso es que no recibo datos de solo algunos campos, de otros si.
¿Y por qué es curioso?

Es decir, si comienzas de nuevo con un script en blanco y sólo haces var_dump() del $_POST que recibes ¿no vienen todos los datos entonces?

Si eso te sigue pasando entonces el problema ni siquiera es de PHP.

¿Ya depuraste en la consola de tu navegador, en la pestaña de red, si efectivamente se envían los datos que esperas?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: formulario, html, registro
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 15:38.