Formulario PHP

babri

Estoy haciendo un formulario en el que tengo que extraer los datos de un formulario HTML y enviarlo a un archivo php el cual envia el mensaje a un correo sin tener que pasar por un mailto. El formulario es el siguiente:


<form action="form.php" method="post">
    <table align="center">
    <tr>
    <td width="148">Nombre:</td><td width="780"><input type="text" name="nombre" value="" size="30" /></td>
    </tr>
    <tr>
    <td>Apellido:</td><td><input type="text" name="apellido" value="" size="30"  /><br /></td>
    </tr>
    <tr>
    <td>Correo Electronico:</td><td><input type="text" name="correo" value="" size="30"  /><br /></td>
    </tr>
    <td>Empresa:</td><td><input type="text" name="empresa" value="" size="30"  /><br /></td>
    </tr>
    <tr>
    <td>Cargo:</td><td><input type="text" name="cargo" value="" size="30"  /><br /></td>
    </tr>
    <tr>
    <td>Código Postal:</td><td><input type="text" name="postal" size="30"  value="" /><br /></td>
    </tr>
    <tr>
    <td>Testimonio:<br /></td><td><textarea name="testimonio" cols="27" rows="10"></textarea><br /></td>
    </tr>
    <tr>
    <td>Foto:</td><td><input type="file" name="foto" value=""  size="30" /><br /></td>
    </tr>
    <tr>
    <td colspan="2">
    De conformidad con la Ley Orgánica 15/1999 de 13 de diciembre de Protección de Datos de Carácter Personal (LOPD), los datos suministrados por el Usuario quedarán incorporados en un fichero automatizado, el cual serán tratados con el grado de protección adecuado, según el Real Decreto 994/1999 de 11 de junio, tomándose las medidas de seguridad necesarias para evitar su alteración, pérdida, tratamiento o acceso no autorizado por parte de terceros que lo puedan utilizar para finalidades distintas para las que han sido solicitados al Usuario*:<br />
    </td>
    </tr>
    <tr>
    <td colspan="2" align="center">
    <input type="radio" name="acepto" value="" /> Acepto la Politíca de Protección de Datos<br />
    </td>
    </tr>
    <tr>
    <td colspan="2" align="center">
    <input type="submit" name="aceptar" value="Enviar" />
    <input type="reset" name="borrar" value="Borrar" />
    </td>
    </tr>
    </table>
    </tr>
    </table>
    </form>

Y este es el archivo php:


$nombre = $_POST["nombre"];

$apellido = $_POST["apellido"];

$correo = $_POST["correo"];

$empresa = $_POST["empresa"];

$cargo = $_POST["cargo"];

$postal = $_POST["postal"];

$testimonio = $_POST["testimonio"];

$foto = $_POST["foto"];

$asunto = "mensaje mandado desde la web";

$mensaje = "<table>
	<tr>
		<td>nombre</td>
	</tr>
	<tr>
		<td>$nombre</td>
	</tr>
</table>";

mail("[email protected]",$asunto, $mensaje,);

Y cuando le doy a enviar me sale lo de php como archivo de texto normal, no se mucho de php y creo que lo estoy montando mal el archivo php...

MrTurbo

Prueba con esto en el archivo php (te faltan las cabeceras en la funcion mail):

$headers = 'From: [email protected]' . "\r\n" .
    'Reply-To: [email protected]' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail("[email protected]",$asunto, $mensaje, $headers);
Khanser

Si te sale el php en modo texto es porque tienes mal configurado el server apache

babri

pero el archivo php solo tengo que poner eso? o en plan html con <html> y tal?

1 respuesta
BLZKZ

#4 ¿ has puesto <?php en la primera linea del archivo php y en la ultima ?> ? xD

2 1 respuesta
babri

#5 eso es lo que me falta creo xDD

babri

esto es lo que me sale al enviar el formulario...lo estoy haciendo en local y no se si puedo eso influir...

MrTurbo

Fijo que no tienes servidor apache y quieres ejecutar el php así a las buenas de dios...

Anda, instálate el XAMPP y ya podrás ejecutar aplicaciones php en local.

Saludos

2 1 respuesta
Caotico

Arriba en la ruta de la web pone F:\misideas\form.php estás abriendo el archivo a pelo pero con el navegador ?

Será lo de #8 no tienes un apache instalado ni nada.

1
squ4r3

para probar php en local tienes que instalar un servidor, el código no lo ejecuta el browser, como html. WAMP o XAMPP como ya te han dicho, es fácil de instalar y configurar.

aunque yo hice algo parecido sin probar en local, lo subí directametne y voilá

babri

si lo que me pasaba era que lo estaba intentando sin servidor, dios menuda payasada xDDD ya lo he subido al servidor y funciona perfecto ^^

Para cuando envía el mensaje me interesaría que mostrara un mensaje que pusiera gracias pro enviar el mail tal y pascal, ¿sabeis?

1 respuesta
eXtreM3

#11 con javascript, así

<script>alert("Gracias por enviar el formulario");</script>

con html + php así

Envías todos los datos post y demás, y cuando mandes el email con la función mail(), justo en la siguiente línea te haces una variable, tal que

$email_enviado = "si";

Después, en la parte de la página donde quieras que se escriba el mensaje, escribes esto

<?php
     if(isset($email_enviado) && $email_enviado == "si")
     {
            echo "Email enviado";
     }
?>

(por supuesto le puedes dar el estilo que quieras)

1 respuesta
babri

#12 muchas gracias ^^

una cosita más, cuando sale el mensaje del script hay alguna forma de que cuando le des a aceptar vuelva a la página del formulario?

2 respuestas
N41RD4

#13 Lo que podrias hacer es que al terminar uses un:

header('Location: lapaginaalaquequieresir.php');

Hay pon el mensaje que quieras mostrar como un archivo normal

Para más info: http://php.net/manual/en/function.header.php

1 respuesta
Caotico

#14 El header, si no recuerdo mal, si lo metes después de haber puesto código html en la web peta, el header tiene que ir arriba antes de escribir nada en html.

1 respuesta
N41RD4

#15 Si, es verdad. Le he pasado la web para que vea esas cosillas.

En el momento en el que haya texto plano en el paso de enviar el correo, no funciona. Se usa como redirección por eso no debería haber texto de por medio.

PD: Los errores también cuentan como texto plano ya que se muestran.

eXtreM3

#13 sí, debajo de la línea del alert pones esta

<script>window.location="http://google.es";</script>
1 respuesta
babri

#17 muchisimas gracias =P me funciona de 10 jeje te lo agradezco :D no soy muy bueno en esto del javascript jaja

M

Hola, soy Manuel y nuevo en este foro, encantado de conoceros.
Tengo un problemilla con php. Os explico todo funciona correctamente pero el asunto no lo incluye en e.mail recibido.

EL PHP ES EL SIGUIENTE. GRACIAS.

<? 
//se mandan a llamar las variables con metodo POST 
$nombre = $_POST["nombre"]; 
$email = $_POST["email"]; 
$telefono = $_POST["telefono"]; 
$asunto = $_POST["asunto"]; 
$comentario = $_POST["comentario"]; 


//se incluyen las variables del form en el mensaje 
$mensaje .="NOMBRE:". $nombre ."\n"; 
$mensaje .="E-MAIL: ".$email." \n"; 
$mensaje .="TELEFONO:".$telefono." \n"; 
$mensaje .="ASUNTO DESDE LA WEB M.D.R.: ".$asunto." \n"; 
$mensaje .="COMENTARIO: ".$comentario." \n"; 

$cabeceras =  "From:<$email>\n";



$body_top = "--Message-Boundary\n"; 
$body_top .= "Content-type: text/plain;charset=US-ASCII\n"; 
$body_top .= "Content-transfer-encoding: 7BIT\n"; 
$body_top .= "Content-description: Mail messagebody\n\n"; 
$cuerpo = $mensaje; 

//cuenta de correo a donde quieren q llegue el formulario 
$destino = "[email protected]";
$asunto =  'M.D.R.  WEB'; 


echo ("<center><b><font size='5' color='#000000' face='Arial'>"); 

if (mail($destino,$origen,$cuerpo,$cabeceras)) 
{ 
echo ("SU MENSAJE HA SIDO ENVIADO CORRECTAMENTE A: MANUEL CASTRO.  *****        En breve le contestaré a este e-mail.  ******  Gracias");
 

} else { 
echo ("ERROR. PORFAVOR INTENTE MAS TARDE"); 
} 

echo ("</center></font></b>"); 

?>
eXtreM3

tu variable $origen tiene que ser $asunto

M

Muchísimas gracias eXtreM3, de loco me ha traído esto, te cuento:
En la pantalla del envío de correo el titulo le tengo puesto asunto, mientras que el campo le llame origen. PAAAAAAAAAAA MATARME Y NO ECHAR NI GOTA DE SANGRE.

Gracias nuevamente, nos vemos por aquí.

                                                           Manuel

Usuarios habituales