Foros del Web » Programando para Internet » PHP »

Problema con formulario php

Estas en el tema de Problema con formulario php en el foro de PHP en Foros del Web. Cada vez que intento enviar el formulario me lanza estos errores: Warning: mail() [function.mail]: Filename cannot be empty in /home/u000000000/public_html/provisional/enviar.php on line 67 Warning: Cannot ...
  #1 (permalink)  
Antiguo 23/05/2014, 06:38
 
Fecha de Ingreso: mayo-2014
Mensajes: 4
Antigüedad: 5 años, 7 meses
Puntos: 0
Pregunta Problema con formulario php

Cada vez que intento enviar el formulario me lanza estos errores:

Warning: mail() [function.mail]: Filename cannot be empty in /home/u000000000/public_html/provisional/enviar.php on line 67

Warning: Cannot modify header information - headers already sent by (output started at /home/u0000000/public_html/provisional/enviar.php:67) in /home/u0000000000/public_html/provisional/enviar.php on line 70

Agradecería que algún alma caritativa me echara una mano. Por más cambios que hago no consigo que el formulario funcione.

El código que utilizo es el siguiente:

Código PHP:
Ver original
  1. <?php
  2. if(isset($_POST['email'])) {
  3.      
  4.     // EDITAR LAS SIGUIENTES 2 LÍNEAS
  5.     $enviar_a = "[email protected]";
  6.     $asunto = "Desde mi web";
  7.      
  8.      
  9.     function died($error) {
  10.         echo "Lo siento, pero hay errores en el formulario que enviaste. ";
  11.         echo "Estos errores se muestran a continuación:<br /><br />";
  12.         echo $error."<br /><br />";
  13.         echo "Por favor vuelve atrás y corrigelo.<br /><br />";
  14.         die();
  15.     }
  16.      
  17.     if(!isset($_POST['nombre']) ||
  18.         !isset($_POST['telefono']) ||
  19.         !isset($_POST['email']) ||
  20.         !isset($_POST['asunto']) ||
  21.         !isset($_POST['mensaje'])) {
  22.         died('Lo siento, pero parece que hay un problema con el formulario que enviaste. ');      
  23.     }
  24.      
  25.     $nombre = $_POST['nombre'];
  26.     $telefono = $_POST['telefono'];
  27.     $email_from = $_POST['email'];
  28.     $asunto = $_POST['asunto'];
  29.     $mensaje = $_POST['mensaje'];
  30.      
  31.     $error_message = "";
  32.     $email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  33.   if(!preg_match($email_exp,$email_from)) {
  34.     $error_message .= 'La dirección de email no es válida, revísala.<br />';
  35.   }
  36.     $string_exp = "/^[A-Za-z .'-]+$/";
  37.   if(!preg_match($string_exp,$nombre)) {
  38.     $error_message .= 'Es obligatorio escribir algún nombre.<br />';
  39.   }
  40.  
  41.   if(strlen($mensaje) < 5) {
  42.     $error_message .= 'En la caja de opinión debes escribir al menos 5 caracteres.<br />';
  43.   }
  44.   if(strlen($error_message) > 0) {
  45.     died($error_message);
  46.   }
  47.     $email_message = "Datos del formulario:\n\n";
  48.      
  49.     function clean_string($string) {
  50.       $bad = array("content-type","bcc:","to:","cc:","href");
  51.       return str_replace($bad,"",$string);
  52.     }
  53.      
  54.     $email_message .= "Nombre y Apellidos: ".clean_string($nombre)."\n";
  55.     $email_message .= "Telefono: ".clean_string($telefono)."\n";
  56.     $email_message .= "Email: ".clean_string($email_from)."\n";
  57.     $email_message .= "Asunto: ".clean_string($asunto)."\n";
  58.     $email_message .= "Mensaje: ".clean_string($mensaje)."\n";
  59.      
  60.      
  61. // Creo cabeceras para el email
  62. $headers = 'From: '.$email_from."\r\n".
  63. 'Reply-To: '.$email_from."\r\n" .
  64. 'X-Mailer: PHP/' . phpversion();
  65. @mail($enviar_a, $asunto, $email_message, $headers);  
  66.  
  67.  if( mail($enviar_a, $asunto, $email_message, $headers) )
  68. {
  69.     //Mensaje enviado, redireccionamos a la web correcta
  70.     header ("Location: ok.html");
  71. }
  72. else
  73. {
  74.    //El mensaje no se pudo enviar, redireccionamos a una web, o podemos desplegar un mensaje
  75.    //header ("Location: mensaje-no-enviado.php");
  76.    echo "No se pudo enviar el mail";
  77. }}
  78. ?>

Última edición por Triby; 23/05/2014 a las 18:39 Razón: Código en highlight
  #2 (permalink)  
Antiguo 23/05/2014, 18:41
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.994
Antigüedad: 11 años, 5 meses
Puntos: 2194
Respuesta: Problema con formulario php

Al parecer tu PHP no está bien configurado: https://bugs.php.net/bug.php?id=47543
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 24/05/2014, 05:38
 
Fecha de Ingreso: mayo-2014
Mensajes: 4
Antigüedad: 5 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario php

Mis conocimientos sobre php son muy básicos. Agradezco mucho tu respuesta pero sigo sin saber qué es lo que tengo que modificar.
Podrías darme alguna indicación más?
Gracias por tu tiempo
  #4 (permalink)  
Antiguo 24/05/2014, 07:42
 
Fecha de Ingreso: noviembre-2009
Mensajes: 535
Antigüedad: 10 años, 2 meses
Puntos: 25
Respuesta: Problema con formulario php

en el archivo php.ini como tienes la mail.log?
__________________
cada vez que aprendes algo te crees que no sabes nada
  #5 (permalink)  
Antiguo 24/05/2014, 11:52
 
Fecha de Ingreso: mayo-2014
Ubicación: mexico
Mensajes: 3
Antigüedad: 5 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario php

Hola te falta cerrar el corchete del primer if antes de la function

if(isset($_POST['email'])) { ***inicia corchete

// EDITAR LAS SIGUIENTES 2 LÍNEAS
$enviar_a = "[email protected]";
$asunto = "Desde mi web";

} <------falta este para que lo cierres cierralo aqui abajo de $asunto



saludos
  #6 (permalink)  
Antiguo 25/05/2014, 04:08
 
Fecha de Ingreso: mayo-2014
Mensajes: 4
Antigüedad: 5 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario php

He cerrado el corchete y ahora me da el siguiente error:

Parse error: syntax error, unexpected '}' in /home/u00000/public_html/provisional/enviar.php on line 77

A lo que me pregunta arros no tengo ni idea de a qué se refiere
  #7 (permalink)  
Antiguo 25/05/2014, 04:59
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con formulario php

arros y Triby te han dado prácticamente la solución, si siguieses el enlace de Triby, o buscases Warning: mail() [function.mail]: Filename cannot be empty te encuentras con esto:
Cita:
[2009-03-02 15:30 UTC] kalle at php dot net
Have you enabled the mailing logging feature thats available as of PHP 5.3 and not defined a mail log setting (mail.log)

[2009-03-02 15:45 UTC] jeffreybolle at gmail dot com
Hi Kalle,
Yes that was it my php.ini file had "mail.log = " uncommented by default. Once I removed that line the warning disappeared.
Thank you for your help. Sorry for the bogus report.
Saludos.
  #8 (permalink)  
Antiguo 27/05/2014, 06:48
 
Fecha de Ingreso: mayo-2014
Mensajes: 4
Antigüedad: 5 años, 7 meses
Puntos: 0
Respuesta: Problema con formulario php

Esto es lo que me pone en el mail.log

mail.log /var/log/php-mail.log /var/log/php-mail.log

Etiquetas: formulario, html
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 02:47.