Foros del Web » Programando para Internet » PHP »

No me funciona Formulario de contacto

Estas en el tema de No me funciona Formulario de contacto en el foro de PHP en Foros del Web. Hola a todos, Encontré en internet un formulario de contacto que funciona perfectamente. El "problema" es que tan sólo incluye Email y Mensaje. Intento añadir ...
  #1 (permalink)  
Antiguo 09/09/2009, 11:13
 
Fecha de Ingreso: diciembre-2008
Mensajes: 11
Antigüedad: 15 años, 4 meses
Puntos: 0
No me funciona Formulario de contacto

Hola a todos,

Encontré en internet un formulario de contacto que funciona perfectamente. El "problema" es que tan sólo incluye Email y Mensaje.

Intento añadir otros campos como nombre, teléfono etc, pero no consigo que mande la información.

El que funciona esta en elfarodelondres . com / contacto. php
El que no funciona esta en elfarodelondres . com / contacto3. php

Véis que es lo que hago mal?
Os agradecería cualquier ayuda,

Gracias
  #2 (permalink)  
Antiguo 09/09/2009, 11:20
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: No me funciona Formulario de contacto

Es que luego tenes que "recoger" esa informacion tambien...... o sea... leerla con $_GET o $_POST segun corresponda
  #3 (permalink)  
Antiguo 09/09/2009, 11:22
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 1 mes
Puntos: 25
Respuesta: No me funciona Formulario de contacto

Obviamente como dijieron tenes que leerla y ponerla el mail();
  #4 (permalink)  
Antiguo 09/09/2009, 11:41
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 1 mes
Puntos: 25
Respuesta: No me funciona Formulario de contacto

La verdad seguro que los mails te llegan por que en el formulario no pusiste el archivo que acciona
<form action="contacto3.php" method="post">

Por favor podrias decir que campos quieres poner y pasar el archivo PHP para ver que variables usas..

El formulario HTML tendria que ser masomenos asi (Le agrege el input asunto):

Código HTML:
<form action="contacto3.php" method="post">
                <table>

                  <tbody><tr>
                    <td class="label"><label for="email">Su dirección de email</label></td>
                    <td><input name="email" id="email" value="" size="30" type="text">
                    </td>
                  </tr>
<tr>
                    <td class="label"><label for="asunto">Asunto</label></td>
                    <td><input name="asunto" id="asunto" size="30" type="text">
                    </td>
                  </tr>
                  <tr>
                    <td class="label"><label for="body">Su mensaje</label></td>

                    <td><textarea name="body" id="body" cols="70" rows="5"> </textarea></td>
                  </tr>
                  <tr>
                    <td id="submit" colspan="2"><button type="submit">Enviar</button></td>
                  </tr>
                </tbody></table>
              </form> 
Como no nos pasas contacto3.php pongo uno de ejemplo:

Código PHP:
<?php
$sfrom
=$_POST[email]; //cuenta que envia
$sdestinatario="[email protected]"//cuenta destino
$ssubject=$_POST[asunto]; //subject
$shtml=$_POST[body]; //mensaje
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
$sheader=$sheader."Mime-Version: 1.0\n";
$sheader=$sheader."Content-Type: text/html";
mail($sdestinatario,$ssubject,$shtml,$sheader);
?>
Con eso ya alcanzaria, dinos que campos le quieres agregar..
  #5 (permalink)  
Antiguo 09/09/2009, 23:31
 
Fecha de Ingreso: diciembre-2008
Mensajes: 11
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: No me funciona Formulario de contacto

Hola, primero agradaceros la rapidez con la que habeis contestado.
Aqui os mando el formulario que encontre en internet y que funciona correctamente:

<?php
$to='fulano_detal_tudomain.com';
$messageSubject='contacto';
$confirmationSubject='En breve nos pondremos en contacto';
$confirmationBody="Gracias por contactar";
$email='';
$body='';
$displayForm=true;
if ($_POST){
$email=stripslashes($_POST['email']);
$body=stripslashes($_POST['body']);
// validate e-mail address
$valid=eregi('^([0-9a-z]+[-._+&])*[0-9a-z]+@([-0-9a-z]+[.])+[a-z]{2,6}$',$email);
$crack=eregi("(\r|\n)(to:|from:|cc:|bcc:)",$body);
if ($email && $body && $valid && !$crack){
if (mail($to,$messageSubject,$body,'From: '.$email."\r\n")
&& mail($email,$confirmationSubject,$confirmationBody .$body,'From: '.$to."\r\n")){
$displayForm=false;
?>
</p>
<p> Su mensaje ha sido enviado correctamente.
El mensaje enviado dice lo siguiente: </p>
<?php
echo '<p>'.htmlspecialchars($body).'</p>';
}else{ // the messages could not be sent
?>
<p> Something went wrong when the server tried to send your message.
This is usually due to a server error, and is probably not your fault.
We apologise for any inconvenience caused. </p>
<?php
}
}else if ($crack){ // cracking attempt
?>
<p><strong> Your message contained e-mail headers within the message body.
This seems to be a cracking attempt and the message has not been sent. </strong></p>
<?php
}else{ // form not complete
?>
<p><strong> Your message could not be sent.
You must include both a valid e-mail address and a message. </strong></p>
<?php
}
}
if ($displayForm){
?>
<form action="" method="post">
<table>
<tr>
<td class="label"><label for="email">Su dirección de email</label></td>
<td><input type="text" name="email" id="email" value="<?php echo htmlspecialchars($email); ?>" size="30" />
</td>
</tr>
<tr>
<td class="label"><label for="body">Su mensaje</label></td>
<td><textarea name="body" id="body" cols="70" rows="5">
<?php echo htmlspecialchars($body); ?>
</textarea></td>
</tr>
<tr>
<td id="submit" colspan="2"><button type="submit">Enviar</button></td>
</tr>
</table>
</form>
<?php
}
?>



Si intento añadir otro campo, digamos "Nombre", consigo que me aparezca la información en la web, pero no me recoge la información. Además, con el formulario que expongo abajo, el primer intento siempre falla, pero al segundo, lo manda, pero sin el nombre.

Ideas ?

Lo que hago es esto:

<?php
$to='fulano_detal_tudomain.com';
$messageSubject='contacto';
$confirmationSubject='En breve nos pondremos en contacto';
$confirmationBody="Gracias por contactar";
$nombre='';
$email='';
$body='';
$displayForm=true;
if ($_POST){
$email=stripslashes($_POST['email']);
$nombre=stripslashes($_POST['nombre']);
$body=stripslashes($_POST['body']);
// validate e-mail address
$valid=eregi('^([0-9a-z]+[-._+&])*[0-9a-z]+@([-0-9a-z]+[.])+[a-z]{2,6}$',$email);
$crack=eregi("(\r|\n)(to:|from:|cc:|bcc:)",$body);
if ($email && $body && $nombre && $valid && !$crack){
if (mail($to,$messageSubject,$body,'From: '.$email."\r\n")
&& mail($email,$confirmationSubject,$confirmationBody .$body,'From: '.$to."\r\n")){
$displayForm=false;
?>
</p>
<p> Su mensaje ha sido enviado correctamente.
El mensaje enviado dice lo siguiente: </p>
<?php
echo '<p>'.htmlspecialchars($body).'</p>';
}else{ // the messages could not be sent
?>
<p> Something went wrong when the server tried to send your message.
This is usually due to a server error, and is probably not your fault.
We apologise for any inconvenience caused. </p>
<?php
}
}else if ($crack){ // cracking attempt
?>
<p><strong> Your message contained e-mail headers within the message body.
This seems to be a cracking attempt and the message has not been sent. </strong></p>
<?php
}else{ // form not complete
?>
<p><strong> Your message could not be sent.
You must include both a valid e-mail address and a message. </strong></p>
<?php
}
}
if ($displayForm){
?>
<form action="" method="post">
<table>
<tr>
<td class="label"><label for="email">Su dirección de email</label></td>
<td><input type="text" name="email" id="email" value="<?php echo htmlspecialchars($email); ?>" size="30" />
</td>
<td class="label"><label for="nombre">Su Nombre</label></td>
<td><input type="text" name="nombre" id="nombre" value="<?php echo htmlspecialchars($nombre); ?>" size="30" />
</td>

</tr>
<tr>
<td class="label"><label for="body">Su mensaje</label></td>
<td><textarea name="body" id="body" cols="70" rows="5">
<?php echo htmlspecialchars($body); ?>
</textarea></td>
</tr>
<tr>
<td id="submit" colspan="2"><button type="submit">Enviar</button></td>
</tr>
</table>
</form>
<?php
}
?>

Muchas gracias
  #6 (permalink)  
Antiguo 10/09/2009, 01:06
 
Fecha de Ingreso: diciembre-2008
Mensajes: 11
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: No me funciona Formulario de contacto

Cita:
Iniciado por almagropaco_ Ver Mensaje
La verdad seguro que los mails te llegan por que en el formulario no pusiste el archivo que acciona
<form action="contacto3.php" method="post">

Por favor podrias decir que campos quieres poner y pasar el archivo PHP para ver que variables usas..

El formulario HTML tendria que ser masomenos asi (Le agrege el input asunto):

Código HTML:
<form action="contacto3.php" method="post">
                <table>

                  <tbody><tr>
                    <td class="label"><label for="email">Su dirección de email</label></td>
                    <td><input name="email" id="email" value="" size="30" type="text">
                    </td>
                  </tr>
<tr>
                    <td class="label"><label for="asunto">Asunto</label></td>
                    <td><input name="asunto" id="asunto" size="30" type="text">
                    </td>
                  </tr>
                  <tr>
                    <td class="label"><label for="body">Su mensaje</label></td>

                    <td><textarea name="body" id="body" cols="70" rows="5"> </textarea></td>
                  </tr>
                  <tr>
                    <td id="submit" colspan="2"><button type="submit">Enviar</button></td>
                  </tr>
                </tbody></table>
              </form> 
Como no nos pasas contacto3.php pongo uno de ejemplo:

Código PHP:
<?php
$sfrom
=$_POST[email]; //cuenta que envia
$sdestinatario="[email protected]"//cuenta destino
$ssubject=$_POST[asunto]; //subject
$shtml=$_POST[body]; //mensaje
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
$sheader=$sheader."Mime-Version: 1.0\n";
$sheader=$sheader."Content-Type: text/html";
mail($sdestinatario,$ssubject,$shtml,$sheader);
?>
Con eso ya alcanzaria, dinos que campos le quieres agregar..
Muchas gracias por tu respuesta,

Probé lo que me has sugerido, pero entonces el asunto me sale como asunto de mensaje.

Necesito incluir la información en el cuerpo del mensaje.

Gracias
  #7 (permalink)  
Antiguo 10/09/2009, 10:44
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 1 mes
Puntos: 25
Respuesta: No me funciona Formulario de contacto

Para añadir nuevos campos modifica creando un nuevo input con una name="" especial, en la pagina PHP lo recoges con $_POST[] y dentro de los corchetes el nombre del input, despues eso lo pones donde queres.. Si queres poner algo como el asunto en el mensaje seria modificando la variable $shtml, como por ejemplo:
<?php
$sfrom=$_POST[email]; //cuenta que envia
$sdestinatario="[email protected]"; //cuenta destino
$ssubject=$_POST[asunto]; //subject
$shtml="Hola admin, desde el form de contacto mandaron el siguiente mensaje $_POST[body]"; //mensaje
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
$sheader=$sheader."Mime-Version: 1.0\n";
$sheader=$sheader."Content-Type: text/html";
mail($sdestinatario,$ssubject,$shtml,$sheader);
?>
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 06:50.