Foros del Web » Programando para Internet » PHP »

Formulario PHP no envía

Estas en el tema de Formulario PHP no envía en el foro de PHP en Foros del Web. Hola Necesito ayuda con un formulario que tengo en una página web, el formulario esta subido a un servidor web. No me llegan los mensajes ...
  #1 (permalink)  
Antiguo 17/02/2016, 05:45
 
Fecha de Ingreso: febrero-2016
Mensajes: 9
Antigüedad: 8 años, 2 meses
Puntos: 0
Formulario PHP no envía

Hola

Necesito ayuda con un formulario que tengo en una página web, el formulario esta subido a un servidor web. No me llegan los mensajes a mi correo ni entran las páginas de confirmación.

Código HTML

Código HTML:
<div class="col-sm-6 col-md-7">
 <h3>Déjanos un mensaje</h3>                   
          <form role="form" action="#" method="post" enctype="multipart/form-data" action="http://www.xxxxxxxxxx.es/contacto-form.php">
                        <div class="form-group">
                            <label class="letra16"  for="nombre">Tu nombre</label>
                        <input type="text" name="nombre" class="form-control input-lg cambio" id="nombre" required>
                        </div>
                        <div class="form-group">
                            <label class="letra16" for="email">Tu email</label>
                        <input type="email" name="email" class="form-control input-lg cambio" id="email" required>
                        </div>                        
                        <div class="form-group">
                            <label class="letra16" for="mensaje">Mensaje</label>
                            <textarea id="mensaje" class="form-control input-lg cambio" rows="6"></textarea>
                        </div>
                        <button class="btn btn-info boton_enviar pull-right cambio" type="submit">Enviar</button>
        </form>
</div> 
Código PHP de contacto-form.php

Código PHP:
<?php
if($_POST["email"]) {
    
    
$to="[email protected]";    
    
    
$subject "Comentario desde la Web";

    
$body '<p style="font-family: Arial, Helvetica, sans-serif; color:#382416; font-size:30px; width: 730px; margin: 10px 25px 0px 25px; padding:0px;">xxxxxxxxxxxxx</p>
<h1 style="font-family:Arial, Helvetica, sans-serif; color:#e4a23f; font-size:16px; font-weight: normal; border-bottom:#e4a23f 1px solid; width: 600px; margin: 10px 25px 0px 25px; padding: 0px 0px 3px 0px;">Comentario desde la Web</h1>
<p style="font-family:Arial, Helvetica, sans-serif; color:#666666; font-size:12px; line-height:18px; width: 600px; margin: 10px 25px 0px 25px; padding:0px;">
Persona de contacto: <span style="color: #333333">'
.$_POST["nombre"].'</span><br />
Email: <span style="color: #333333">'
.$_POST["email"].'</span><br /></p>
Observaciones</h2><p style="font-family:Arial, Helvetica, sans-serif; color:#333; font-size:12px; line-height: 18px; width: 600px; margin: 10px 25px 0px 25px; padding:0px;">'
.nl2br($_POST["mensaje"]).'</p>';

    
//direccion del remitente 
    
$headers "MIME-Version: 1.0\n"
    
$headers .= "Content-type: text/html; charset=utf-8\n"

    
//direccion del remitente 
    
$headers .= "From: ".$_POST["email"]."\n"

    
mail($to$subject$body$headers);


    
$envio_email 1;
    
}

if(
$envio_email == 1) { 
    
header("Location:http://www.xxxxxxxxxx.es/contacto-confirma.html"); 
} else {
    
header("Location:http://www.xxxxxxxxxx.es/contacto-error-envio.html"); 
}
?>

Gracias por adelantado, un saludo.
  #2 (permalink)  
Antiguo 17/02/2016, 06:42
 
Fecha de Ingreso: diciembre-2012
Ubicación: Murcia
Mensajes: 329
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Formulario PHP no envía

Si ese servidor web no tiene configurado el correo, poco vas a poder hacer, echándole un vistazo por encima al código parece estar correcto.
  #3 (permalink)  
Antiguo 17/02/2016, 16:03
 
Fecha de Ingreso: febrero-2016
Mensajes: 9
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Formulario PHP no envía

Esta en un servidor con esta versión de php -PHP Version 5.6.17-

¿Qué tendría que estar activado para que envie?

Gracias, un saludo.
  #4 (permalink)  
Antiguo 17/02/2016, 16:18
 
Fecha de Ingreso: marzo-2005
Mensajes: 153
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Formulario PHP no envía

yo estoy usando ese mismo formulario y llega perfecto mi pagina esta alojada en hostinger

Prueba quitando la direccion web y deja solo nombre de archivos contacto-form.php, enviar.html, gracias.html
  #5 (permalink)  
Antiguo 18/02/2016, 02:42
 
Fecha de Ingreso: febrero-2016
Mensajes: 9
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Formulario PHP no envía

Esta subido en Acens me extraña mucho que no tenga activado el correo, probaré haciendo lo que me dice Ibrm...
  #6 (permalink)  
Antiguo 18/02/2016, 04:24
 
Fecha de Ingreso: septiembre-2008
Mensajes: 38
Antigüedad: 15 años, 7 meses
Puntos: 2
Tienes 2 actions en tu form ...
  #7 (permalink)  
Antiguo 18/02/2016, 10:50
 
Fecha de Ingreso: febrero-2016
Mensajes: 9
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Formulario PHP no envía

Cita:
Iniciado por YorchX Ver Mensaje
Tienes 2 actions en tu form ...
Gracias, vaya despiste.

Lo he quitado y ahora si me abre la página de confirmación pero no me llega el email...
  #8 (permalink)  
Antiguo 18/02/2016, 12:18
 
Fecha de Ingreso: febrero-2016
Mensajes: 9
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Formulario PHP no envía

Código HTML:
<div class="col-sm-6 col-md-7">
 <h3>Déjanos un mensaje</h3>                   
          <form role="form" method="post" enctype="multipart/form-data" action="[COLOR="Red"]http://www.xxxxxxxxxx.es/contacto-form.php[/COLOR]">
                        <div class="form-group">
                            <label class="letra16"  for="nombre">Tu nombre</label>
                        <input type="text" name="nombre" class="form-control input-lg cambio" id="nombre" required>
                        </div>
                        <div class="form-group">
                            <label class="letra16" for="email">Tu email</label>
                        <input type="email" name="email" class="form-control input-lg cambio" id="email" required>
                        </div>                        
                        <div class="form-group">
                            <label class="letra16" for="mensaje">Mensaje</label>
                            <textarea id="mensaje" class="form-control input-lg cambio" rows="6"></textarea>
                        </div>
                        <button class="btn btn-info boton_enviar pull-right cambio" type="submit">Enviar</button>
        </form>
</div> 
Código PHP:
 <?php
if($_POST["email"]) {
    
    
$to="[COLOR="Red"][email protected][/COLOR]";    
    
    
$subject "Comentario desde la Web";

    
$body '<p style="font-family: Arial, Helvetica, sans-serif; color:#382416; font-size:30px; width: 730px; margin: 10px 25px 0px 25px; padding:0px;">xxxxxxxxxxxxx</p>
<h1 style="font-family:Arial, Helvetica, sans-serif; color:#e4a23f; font-size:16px; font-weight: normal; border-bottom:#e4a23f 1px solid; width: 600px; margin: 10px 25px 0px 25px; padding: 0px 0px 3px 0px;">Comentario desde la Web</h1>
<p style="font-family:Arial, Helvetica, sans-serif; color:#666666; font-size:12px; line-height:18px; width: 600px; margin: 10px 25px 0px 25px; padding:0px;">
Persona de contacto: <span style="color: #333333">'
.$_POST["nombre"].'</span><br />
Email: <span style="color: #333333">'
.$_POST["email"].'</span><br /></p>
Observaciones</h2><p style="font-family:Arial, Helvetica, sans-serif; color:#333; font-size:12px; line-height: 18px; width: 600px; margin: 10px 25px 0px 25px; padding:0px;">'
.nl2br($_POST["mensaje"]).'</p>';

    
//direccion del remitente 
    
$headers "MIME-Version: 1.0\n"
    
$headers .= "Content-type: text/html; charset=utf-8\n"

    
//direccion del remitente 
    
$headers .= "From: ".$_POST["email"]."\n"

    
mail($to$subject$body$headers);


    
$envio_email 1;
    
}

if(
$envio_email == 1) { 
    
header("Location:[COLOR="Red"]http://www.xxxxxxxxxx.es/contacto-confirma.html[/COLOR]"); 
} else {
    
header("Location:[COLOR="Red"]http://www.xxxxxxxxxx.es/contacto-error-envio.html[/COLOR]"); 
}
?>
¿Alguien me haría el favor de probarlo para ver si le envía? Tendría que cambiar lo que esta en rojo

Gracias
  #9 (permalink)  
Antiguo 18/02/2016, 14:07
Avatar de Sagajean  
Fecha de Ingreso: enero-2015
Ubicación: Valencia
Mensajes: 5
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Formulario PHP no envía

En nuestros servidores funciona perfectamente el código ( [URL="https://sagajean.com"]https://www.sagajean.com[/URL] ) parecer ser una restricción del servidor por seguridad, seguramente para evitar el uso muy habitual de este comando para el spam. La única diferencia que he detectado en el codigo del primer post que has publicado, es el comando action esta repetido.


Además no tienes bien definido mensaje en la linea 13 del php

Última edición por Sagajean; 18/02/2016 a las 14:15 Razón: He visto otro error
  #10 (permalink)  
Antiguo 19/02/2016, 01:34
 
Fecha de Ingreso: febrero-2016
Mensajes: 9
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Formulario PHP no envía

Cita:
Iniciado por Sagajean Ver Mensaje
En nuestros servidores funciona perfectamente el código ( [URL="https://sagajean.com"]https://www.sagajean.com[/URL] ) parecer ser una restricción del servidor por seguridad, seguramente para evitar el uso muy habitual de este comando para el spam. La única diferencia que he detectado en el codigo del primer post que has publicado, es el comando action esta repetido.


Además no tienes bien definido mensaje en la linea 13 del php
Gracias ¿y cómo tendría que definir el mensaje? ¿Te refieres a esto?
Código PHP:
.nl2br($_POST["mensaje"]) 
¿o a esto?

Código HTML:
<textarea id="mensaje" class="form-control input-lg cambio" rows="6"></textarea> 
¿Le tengo que añadir name="mensaje"?
Gracias, un saludo.
  #11 (permalink)  
Antiguo 19/02/2016, 02:31
 
Fecha de Ingreso: febrero-2016
Mensajes: 9
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Formulario PHP no envía

Cita:
Iniciado por dragonut Ver Mensaje
Gracias ¿y cómo tendría que definir el mensaje? ¿Te refieres a esto?
Código PHP:
.nl2br($_POST["mensaje"]) 
¿o a esto?

Código HTML:
<textarea id="mensaje" class="form-control input-lg cambio" rows="6"></textarea> 
¿Le tengo que añadir name="mensaje"?
Gracias, un saludo.
Le he añadido un name="mensaje" y sigue igual, entra en la página de confirmación pero no envía nada
  #12 (permalink)  
Antiguo 19/02/2016, 15:55
Avatar de Sagajean  
Fecha de Ingreso: enero-2015
Ubicación: Valencia
Mensajes: 5
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Formulario PHP no envía

En el código html deberías agregar al textarea con el name="mensaje" y en el código php para llamar la variable del formulario, es suficiente con que pongas $_POST['mensaje'], pero todo esto no quita para que el código no funcione para enviar el email, deberías de ser capaz de enviar, sino puedes todo a punta a que tu servidor tiene restringido la función mail, deberias comprobarlo con el comando phpinfo() o con el siguiente script:

Código PHP:
Ver original
  1. <?php
  2. if(function_exists('mail'))
  3.  echo "SI existe la función mail";
  4. else
  5.  echo "NO existe la función mail";
  6. ?>
  #13 (permalink)  
Antiguo 23/02/2016, 00:46
 
Fecha de Ingreso: febrero-2016
Mensajes: 9
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Formulario PHP no envía

Cita:
Iniciado por Sagajean Ver Mensaje
En el código html deberías agregar al textarea con el name="mensaje" y en el código php para llamar la variable del formulario, es suficiente con que pongas $_POST['mensaje'], pero todo esto no quita para que el código no funcione para enviar el email, deberías de ser capaz de enviar, sino puedes todo a punta a que tu servidor tiene restringido la función mail, deberias comprobarlo con el comando phpinfo() o con el siguiente script:

Código PHP:
Ver original
  1. <?php
  2. if(function_exists('mail'))
  3.  echo "SI existe la función mail";
  4. else
  5.  echo "NO existe la función mail";
  6. ?>
Parece que la función mail si existe en el servidor.
  #14 (permalink)  
Antiguo 24/02/2016, 02:03
 
Fecha de Ingreso: febrero-2016
Mensajes: 9
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Formulario PHP no envía

He abierto una incidencia con el proveedor Acens y esto es lo que me contestan:

Estimado cliente.


No vemos que esté configurando una autenticación SMTP. Le indicamos que por razones de seguridad la función Mail para el servidor está bloqueada. Para hacer envíos de correo desde la plataforma de hosting compartido, tiene que hacer una autenticación SMTP completa.

Le adjunto un ejemplo, si le es de ayuda:

Código PHP:
error_reportingE_ALL & ~( E_NOTICE E_STRICT E_DEPRECATED ) ); //Aquí se genera un control de errores "NO BORRAR NI SUSTITUIR"
require_once "Mail.php"//Aquí se llama a la función mail "NO BORRAR NI SUSTITUIR"

$to ''//Aquí definimos quien recibirá el formulario
$from ''//Aquí definimos que cuenta mandará el correo, generalmente perteneciente al mismo dominio
$host ''//Aquí definimos cual es el servidor de correo saliente desde el que se enviaran los correos
$username ''//Aqui se define el usuario de la cuenta de correo
$password ''//Aquí se define la contraseña de la cuenta d ecorreo que enviará el mensaje
$subject ''//Aquí se define el asunto del correo
$body ''//Aquí se define el cuerpo de correo

//A partir de aquí empleamos la función mail para enviar el formulario

$headers = array ('From' => $from,
'To' => $to,
'Subject' => $subject);
$smtp Mail::factory('smtp',
array (
'host' => $host,
'auth' => true,
'username' => $username,
'password' => $password));

$mail $smtp->send($to$headers$body);

//Una vez aquí habremos enviado el mensaje mediante el formulario

//El siguiente codigo muestra en pantalla un mensaje indicando que el mensaje ha sido enviado y a que cuenta ES OPCIONAL. Lo incluimos para verificar que el formulario de prueba esta funcionando

if (PEAR::isError($mail)) {
echo(
"
$mail->getMessage() . "

"
);
} else {
echo 
"Mensaje enviado desde POA a "$to ;
}


?> 
¿Alguien me puede ayudar a adaptar mi formulario a lo que me piden? No me entero de nada.

el mío es este:

Código PHP:
<?php
if($_POST["email"]) {
    
    
$to="[email protected]";
    

    
    
    
$subject "Comentario desde la Web";

    
$body '<p style="font-family: Arial, Helvetica, sans-serif; color:#382416; font-size:30px; width: 730px; margin: 10px 25px 0px 25px; padding:0px;">FrankTheBand</p><h1 style="font-family:Arial, Helvetica, sans-serif; color:#e4a23f; font-size:16px; font-weight: normal; border-bottom:#e4a23f 1px solid; width: 600px; margin: 10px 25px 0px 25px; padding: 0px 0px 3px 0px;">Comentario desde la Web</h1><p style="font-family:Arial, Helvetica, sans-serif; color:#666666; font-size:12px; line-height:18px; width: 600px; margin: 10px 25px 0px 25px; padding:0px;">Persona de contacto: <span style="color: #333333">'.$_POST["nombre"].'</span><br />Email: <span style="color: #333333">'.$_POST["email"].'</span></p>Observaciones</h2><p style="font-family:Arial, Helvetica, sans-serif; color:#333; font-size:12px; line-height: 18px; width: 600px; margin: 10px 25px 0px 25px; padding:0px;">'.nl2br($_POST["mensaje"]).'</p>';

    
//direccion del remitente 
    
$headers "MIME-Version: 1.0\n"
    
$headers .= "Content-type: text/html; charset=utf-8\n"

    
//direccion del remitente 
    
$headers .= "From: ".$_POST["email"]."\n"

    
mail($to$subject$body$headers);
    
//mail($to2, $subject, $body, $headers);
    //mail($to, $subject, $body);

    
$envio_email 1;
    
}

if(
$envio_email == 1) { 
    
header("Location:contacto-confirma.html"); 
} else {
    
header("Location:contacto-error-envio.html"); 
}
?>
  #15 (permalink)  
Antiguo 24/02/2016, 02:22
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Formulario PHP no envía

Hola dragonut,

Te recomiendo documentarte sobre la clase PHPMailer. Se que lo recomiendo mucho pero no me llevo comisión ni nada Es que lo uso y me parece muy fácil y práctico.

Espero que te sirva.

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 18:35.