Foros del Web » Programando para Internet » PHP »

echo no responde

Estas en el tema de echo no responde en el foro de PHP en Foros del Web. Tengo un formulario de email en www.anhida.org/portal/ el cual me apunta a este script PHP el cual devuelve mensaje solo cuando se envia el formulario ...
  #1 (permalink)  
Antiguo 19/04/2012, 13:57
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
Pregunta echo no responde

Tengo un formulario de email en www.anhida.org/portal/ el cual me apunta a este script PHP el cual devuelve mensaje solo cuando se envia el formulario vacio, no se porque no devuelve el mensaje de recibido bien, simplemente se queda en blanco

gracias


Código PHP:
  //variable de validacion

  
$valida true;

  if (empty(
$_POST['nombre'])) {

    echo 
"<b>No se especifico nombre</b><br/>";

    
$valida false;

  }

  if (empty(
$_POST['email'])) {

   echo 
"<b>No se especifico E - mail</b><br/>";

   
$valida false;

  }

  if (empty(
$_POST['asunto'])) {

   echo 
"<b>No se especifico asunto</b><br/>";

   
$valida false;

  }

  if (empty(
$_POST['mensaje'])) {

   echo 
"<b>Por favor, no envie un mensaje en blanco</b><br/>";

   
$valida false;

  }

  
// Validamos la direccion de correo electronico

  
if (!strchr($_POST['email'],"@") || !strchr($_POST['email'],"."))
   {

    echo 
"<b>No es un correo valido</b><br/>";

    
$valida false;

   }

  
// Si las comprobaciones son correctas

  
if ($valida == true)

   {

    
// Creamos el header para el mensaje

    // para:

    
$to $_POST['para'];

    
// Asunto

    
$subject $_POST['asunto'];

    
// Cabeceras del mail (Content-Type y demas info)

    
$headers "MIME-Version: 1.0\n";

    
$headers .= "Content-type: text/html; charset=utf-8\n";

    
// El From: en la forma Nombre <[email protected]>, esto garantiza que

    // el receptor vea solo el nombre de quien envia

    
$headers .= "From: ".$_POST['nombre']." <".$_POST['email'].">\n";

    
// Opcional: Resopnder a:

    
$headers .= "Reply-To: " $_POST['email']."\n";

    
//Opcional X-Mailer

    
$headers .= "X-Mailer: PHP/" phpversion();

    
// Cuerpo del email

    
$message $_POST['mensaje'];

    if(
mail($to$subject$message,$headers))
     {

      echo 
"<p>Mensaje enviado, Gracias por sus sugerencias.<br /><a href=\"javascript:history.go(-1)\">Volver</a></p>";

     }

   } 
  #2 (permalink)  
Antiguo 19/04/2012, 14:06
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: echo no responde

Te esta enviando el mail? porque la unica forma de que te muestre el mensaje es que el metodo mail() te devuelva true. Y que $valida tambien sea true. Verifica que este entrando a ese if primero y despues de que envie bien el mail
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #3 (permalink)  
Antiguo 19/04/2012, 16:59
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: echo no responde

El email lo manda correctamente, en caso contrario PHP informa de los campos no cubiertos en el formulario, lo estraño es que cuando manda el email no refleja el mensaje de correo enviado correctamente via echo

gracias
  #4 (permalink)  
Antiguo 19/04/2012, 19:05
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: echo no responde

No, una cosa es que te muestre que los campos del formulario no fueron llenados y otra cosa totalmente distinta es que te envie el mail, porque puede llenarte todos los campos pero el mail no te lo envia. Corroboraste que lo envie a una cuenta tuya de correo? Tenes el display_errors en el php.ini en ON? Porque capaz tenes problemas con el sendmail o lo que utilices para enviar el correo.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #5 (permalink)  
Antiguo 20/04/2012, 01:47
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: echo no responde

los emails llegan perfectos con los 4 campos esenciales... gracias

ASUNTO
De: quico (*******@hotmail.com)
Enviado: jueves, 19 de abril de 2012 17:10:52
Para: *******@hotmail.com
Mensaje
  #6 (permalink)  
Antiguo 20/04/2012, 05:18
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: echo no responde

Porba en meterle un else, a la condicion del envio de mail() para verificar que el mail() esta devolviendo algo, y si podes habilita los warnings en la pagina, a ver si con eso encontramos el porque
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #7 (permalink)  
Antiguo 20/04/2012, 05:49
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: echo no responde

¿como habilito los warning? gracias
  #8 (permalink)  
Antiguo 20/04/2012, 05:56
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: echo no responde

he usado un else...
Cita:
if(mail($to, $subject, $message, $headers))
{

echo "<p>Mensaje enviado, Gracias por sus sugerencias.</p>";

}else{echo "$to, $subject, $message, $headers";}
y al enviar el email devuelve

[email protected], Asunto, Mensaje, MIME-Version: 1.0 Content-type: text/html; charset=utf-8 From: Quico Reply-To: [email protected] X-Mailer: PHP/5.2.17

parece que a veces no se envia, ahora no lo recibo
  #9 (permalink)  
Antiguo 20/04/2012, 06:14
Avatar de Panicav  
Fecha de Ingreso: diciembre-2007
Ubicación: Rosario, Santa Fe - Argentina.
Mensajes: 135
Antigüedad: 16 años, 3 meses
Puntos: 8
Respuesta: echo no responde

Para mostrar errores, espero te sea útil, saludos.

http://www.forosdelweb.com/f18/mostr...es-php-297314/
  #10 (permalink)  
Antiguo 20/04/2012, 06:56
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: echo no responde

En 1and1 no veo ese archivo con la opcion para errores, y si hago algo mal devuelve errores, creo que ya se lo que sucede, me da la sensación que la función mail no soporta emails demasiado corros al estilo por ejemplo, [email protected]
  #11 (permalink)  
Antiguo 20/04/2012, 07:07
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: echo no responde

los warnings los habilitas en el php.ini busca la propiedad error_reporting y fijate que este asi:

Código Apache:
Ver original
  1. error_reporting = E_ALL & ~E_DEPRECATED

y de paso fijate que display_errors este asi:

Código Apache:
Ver original
  1. display_errors = On

Por las dudas.

Con el tema de los mails, fijate la documentacion sobre la funcion mail() a ver si especifica cosas concretas, tambien su implementacion varia segun si tu servidor esta bajo unix o bajo windows, como es el tema del BC, CC y demas...

Aca te dejo el link: http://php.net/manual/es/function.mail.php
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #12 (permalink)  
Antiguo 20/04/2012, 09:38
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: echo no responde

he estado haciendo unas pruenas (servidor linux) y el email del remitente tiene que tener como mínimo 8 caracteres

CODIGO POR DEFECTO
Cita:
if (empty($_POST['email'])) {
echo "<b>No se especifico E - mail</b><br/>";
$valida = false;
}
de lo poco que se de javascript intento lo siguiente
Cita:
var email = $_POST['email']; //--> No se porque me da error

if (empty($_POST['email']) || (email.length < 8) ) {
echo "<b>No se especifico E - mail</b><br/>";
$valida = false;
}
  #13 (permalink)  
Antiguo 20/04/2012, 09:42
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: echo no responde

Estas mezclando javascript con php :S, si eso te funciona yo te aplaudo podes preguntarlo en el php tranquilamente usando el metodo strlen()
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #14 (permalink)  
Antiguo 20/04/2012, 09:44
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: echo no responde

que descuido queria decir PHP
  #15 (permalink)  
Antiguo 20/04/2012, 09:47
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: echo no responde

Siento el Fallo, ya funciona, gracias por la ayuda

Asi indico si el email no es valido
if (empty($_POST['email']) or (strlen($_POST['email'] < 8 ))) {
[/QUOTE]
  #16 (permalink)  
Antiguo 20/04/2012, 09:51
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: echo no responde

Cita:
Iniciado por quico5 Ver Mensaje
Siento el Fallo, ya funciona, gracias por la ayuda

Asi indico si el email no es valido
if (empty($_POST['email']) or (strlen($_POST['email'] < 8 ))) {
[/QUOTE]

Buenisimo ;), exitos con eso
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #17 (permalink)  
Antiguo 20/04/2012, 10:08
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: echo no responde

me precipite al responder, perdona si te hago perder el tiempo, dejo el if del email como estaba pues con el else en la función mail() me llega

if(mail($to, $subject, $message,$headers))
{
echo "<p>Mensaje enviado, Gracias por sus sugerencias.</p>";
}else{
echo "El envio no se ha podido realizar, revise el formulario y vuelva a intentarlo.<br/>(En unos segundos se cargara el formulario)";
}
}
  #18 (permalink)  
Antiguo 20/04/2012, 10:12
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: echo no responde

Cita:
Iniciado por quico5 Ver Mensaje
me precipite al responder, perdona si te hago perder el tiempo, dejo el if del email como estaba pues con el else en la función mail() me llega

if(mail($to, $subject, $message,$headers))
{
echo "<p>Mensaje enviado, Gracias por sus sugerencias.</p>";
}else{
echo "El envio no se ha podido realizar, revise el formulario y vuelva a intentarlo.<br/>(En unos segundos se cargara el formulario)";
}
}
No se entiende si hay problema o no :S
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #19 (permalink)  
Antiguo 20/04/2012, 10:30
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: echo no responde

ahora funciona bien (www.anhida.org/portal/), el código lo sacara de una pagina web, el problema que tenia es que solo daba error con $_POST sin contenido, pero en la función MAIL no devolvía ningún error cosa que solucione con un ELSE

de todas formas estoy oxidado con PHP y sera mejor que lo repase para no confundirlo con javascript

al buscar en google no especificara PHP y cogiera el codigo de javascript

gracias por la ayuda prestada
  #20 (permalink)  
Antiguo 20/04/2012, 10:47
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: echo no responde

http://php.net/manual/es/function.mail.php no hace referencias en sus ejemplos a emails cortos, mi ingles no es muy bueno y las traducciones de google dejan el código algo ilegible, pero me imagino que no deben estar permitidos en esta funcion emails de menos de 8 caracteres, si se piensa es casi imposible que exista alguno tan corto, pero quien sabe

Etiquetas: echo, formulario, html, responde, variables
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:18.