Enviar un formulario por mail con PHP

29 de enero de 2003
Valoración del artículo:
Ejemplo de envío de un formulario por correo electrónico por mediación de la tecnología de servidor PHP.
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
El método para enviar un formulario con PHP resulta muy similar al utilizado en ASP. Varía tan sólo la sintaxis utilizada y las líneas de código que realizan el envío del correo electrónico.

Para empezar, sería muy útil que aprendamos a enviar correos electrónicos con PHP, para lo que tenemos un artículo en DesarrolloWeb.

Esquema de funcionamiento

En este caso nos vamos a apoyar en la variable $HTTP_POST_VARS, que debería contener el formulario, para saber si hemos recibido o no datos desde un formulario. Dicha variable la utilizamos en un enunciado if (! $HTTP_POST_VARS), que si pasa por el caso positivo -no había nada en $HTTP_POST_VARS- significa que no se ha recibido nada desde un formulario. En ese caso, muestro el formulario de contacto.

En caso contrario -sí que había algo en $HTTP_POST_VARS- quiere decir que estamos recibiendo datos por un formulario y en ese caso, recogemos los datos y componemos el cuerpo del mensaje.

Veamos el código de la página para crear el formulario, recibirlo y componer el cuerpo del mensaje que se va a enviar. En el mismo código podremos encontrar también la llamada a la función que envía el correo.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>Mándanos tus comentarios</title>
</head>

<body bgcolor="#cccc66" text="#003300" link="#006060" vlink="#006060">
<?
if (!$HTTP_POST_VARS){
?>
<form action="envia_form_php.php" method=post>
Nombre: <input type=text name="nombre" size=16>
<br>
Email: <input type=text name=email size=16>
<br>
Comentarios: <textarea name=coment cols=32 rows=6></textarea>
<br>
<input type=submit value="Enviar">
</form>
<?
}else{
    //Estoy recibiendo el formulario, compongo el cuerpo
    $cuerpo = "Formulario enviado\n";
    $cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . "\n";
    $cuerpo .= "Email: " . $HTTP_POST_VARS["email"] . "\n";
    $cuerpo .= "Comentarios: " . $HTTP_POST_VARS["coment"] . "\n";

    //mando el correo...
    mail("admin@tudominio.com","Formulario recibido",$cuerpo);

    //doy las gracias por el envío
    echo "Gracias por rellenar el formulario. Se ha enviado correctamente.";
}
?>
</body>
</html>

Comentarios
Fueron enviados 177 comentarios al artículo
97 comentarios no revisados
80 comentarios revisados:
Por: Miguel Angel Alvarez
07/3/03
Un visitante me ha mandado una duda:

Me devuelve el siguiente Mensaje.

Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\Mis web\IGC\pemail.php on line 34

Pues lo que pasa es que tienes que configurar algo en el mensaje o en el php.ini, que es el archivo de configuración de PHP.

Por lo que leo en el error, parece que tienes que definir todavía el campo FROM, que es la dirección de correo del remitente. Lo tendrías que indicar o bien en la configuración del envío de correo, dentro del script PHP, o el remitente por defecto que se puede indicar en el php.ini. Para asegurarte, ponlo en los dos sitios.

Pongo aquí un header completo para el mensaje, que luego le debes de pasar a la función mail().

$headers_mensaje = "From: correo@dominio.com\r\n" . "Reply-To: correo@dominio.com\r\n" . "Return-path: correo@dominio.com\r\n" . "MIME-Version: 1.0\n" . "Content-type: text/plain; charset=iso-8859-1";

Por: pablo
11/3/03
¿Se podría haber enviado este formulario a dos correos distintos?

RESPUESTA

PHP permite perfectamente el envío de un correo a dos buzones distintos, así que sólo necesitas configurar convenientemente el envío de correo para que se mande a dos sitios distintos. Hablamos sobre esta y otras configuraciones en el artículo Mandar mails desde PHP.

Por: Danilo
10/4/03
Hola ! Estoy comenzando a interpretar el codigo PHP. He comenzado con algo sencillo como es el envio de datos a travez de un formulario. Comprendo perfectamente el funcionamiento del codigo expuesto en esta sección. Solo tengo una duda, el archivo "envia_form_php.php" el cual llama la funcion "action" del formulario, que codigo posee ? O mejor dicho, como lo hago y que codigo tiene que tener ? Espero se entienda mi consulta.

RESPUESTA

Pues tu pregunta se entiende a medias... supongo que lo que te pasa es que no entiendes o no llegas a ver que una página puede llamarse a si misma a través de un formulario.

Todo el código de la página se puede ver en el artículo. La página en si continene un if que es capaz de realizar unas acciones u otras dependiendo de si se reciben o no datos de un formulario. Si no se reciben, se muestra el formulario y si se estaban recibiendo se opera para mandar dicho formulario por mail.

La página se debe llamar "envia_form_php.php".

Por: Rockman
22/4/03
a mi me sale: Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in c:\apache\htdocs\envia_form_php.php on line 29

RESPUESTA

Tienes mal configurado PHP para que utilize un servidor SMTP o ese servidor está caído. Eso se configura en la instalación de PHP o en el php.ini.

Por: Nicolas
26/5/03
Perfecto, buenisimo, Para recomndar.
Ahora lo que no queda muy bien "A mi gusto" es que el usuario de ese formulario quede estancado en el mensaje de que se ha recivido el e-mail, estaría bueno poner una redirección a alguna página del sitio, despues de tantos segundos del mensaje.
se puede hacer eso?, hay que ponerlo dentro de echo?, yo intente con un javaScript pero me tira falla enm la linea N°X.

De todas maneras estoy más que satisfecho con dicho formulario de envio de correo.

Saludos
Por: naxly
06/6/03
Pregunta: ¿funciona igual desde el sistema operativo linux?

RESPUESTA

Sí, PHP funciona igual independientemente del sistema operativo que se utilice. En este caso lo que hay que tener es bien configurado PHP en cualquiera de los dos sistemas.

Por: Guido
07/6/03
Esto estuvo reweno, y les agradezco que se tomen el tiempo para ayudar a otros; sin embargo (no dejo de ser un neófito) me queda la duda de si para enviar el formulario por mail el visitante tendrá que habilitar su, por ejemplo, outlook express; o si esto me libera de dichos programas.

RESPUESTA

Si envia el correo con el servidor, como en este caso, el vistitante no necesita tener Outlook ni ningún otro programa de correo.

Por: Rasco
24/6/03
Como puedo hacer que después de enviar el formulario, se redirija a otra pagina?

RESPUESTA

Pues poniendo al final del script un header("location:http://www.tudireccion.com") que sirve para crear una redirección a una URL concreta. El header envía información en la cabecera del protocolo http y solo se puede ejecutar si aun no se ha escrito texto en la página.

Por: Sergio
05/10/03
Me funciono sin ningun problema pero solo poniendo el codigo que me dio, o sea copiando y pegando...pero al copiar igual el mismo codigo, en una pagina ya prediseñada por mi y ordenando un poco mas los forms, no me funciona, porque? muy buenos los tutoriales ñ_ñ

RESPUESTA

La verdad es que no puedo saber porqué no te funcionó. Debería verlo, pero lo que está claro es que has hecho algo mal.

Por: Gustavo
22/10/03
¿Dónde está el archivo envia_form_php.php? ¿Es donde debemos colocar el trozo de código que manda el correo?

Respuesta

Disculpad que no haya comentado ese detalle en el artículo. Lo que estás comentando no es exactamente correcto. Me explico:

En realidad sólo hay un archivo y se llama envia_form_php.php. Ese archivo contiene todo el código del ejemplo. El formulario, por decirlo de alguna manera, se llama a si mismo y es suficientemente listo para saber si debe mostrar el formulario o debe mandar el mail.

Por: Rodrigo
20/11/03
Miguel:
Utilicé tu script en uno de los sitios que programé y funcionó a la perfección.
Pero al querer usarlo en otros dos sitios me figura un error 405 (HTTP 405 - Resource not allowed Internet Explorer)
Esto se debe a que el servidor no admite php? (segun ellos si lo hace) Quise usar otro scrip de php y tampoco anduvo.
Desde ya gracias.
Por: Luis
23/11/03
Muy buen articulo, necesitaba hacer esto de urgencia y tan solo meti en un buscador las palabras claves y di con este sitio, muy buen trabajo, el unico problema que tube fue en comprender que el archivo debia llamarse asi o en su defecto acmbiar en el codigo para que donde dice archivo.php diga el nombre de tu archivo.

Sigan así.
Por: Cristian
03/1/04
La funcion mail() retorna true si se realiza y false si no, bueno a mi me retorna false, tengo windows y he leido que es necesario tener un servidor smtp instalado y otras cosas, pero tu dices que no, en fin, no me funciona y no se que es grax.
Por: luis balada
14/1/04
De esta forma se peude mandar al remitente un correo, en el que se reproduce su formulario, y se le da acuse de recibo

       //mando el correo...
       mail("admin@tudominio.com","Formulario recibido",$cuerpo);
$respuesta ='Recibimos su preticion. Recibirá nuestras noticias' ;
mail(el correo del usuario,"Formulario recibido",$cuerpo . '\n' . $respuesta);
       //doy las gracias por el envío
       echo "Gracias por rellenar el formulario. Se ha enviado correctamente.";
}
Por: ALEJO
20/2/04
Mira, yo tengo un codigo para subir archivos:

//tomo el valor de un elemento de tipo texto del formulario
$cadenatexto = $_POST["cadenatexto"];
echo "Escribió en el campo de texto: " . $cadenatexto . "

";

//datos del arhivo
$nombre_archivo = $HTTP_POST_FILES['userfile']['name'];
$tipo_archivo = $HTTP_POST_FILES['userfile']['type'];
$tamano_archivo = $HTTP_POST_FILES['userfile']['size'];
//compruebo si las características del archivo son las que deseo
if (!((strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg")) && ($tamano_archivo < 100000))) {
echo "La extensión o el tamaño de los archivos no es correcta.

  • Se permiten archivos .gif o .jpg
  • se permiten archivos de 100 Kb máximo.
  • ";
    }else{
    if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $nombre_archivo)){
    echo "El archivo ha sido cargado correctamente.";
    }else{
    echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
    }
    }
    ?>

    Lo que yo quiero, es que, en caso de que el archivo se suba correctamente, se me notifique con un mail en el cual me de:
    - Lo que escribieron en el campo de texto
    - y el nombre del archivo que subieron:
    ¿Qué hago?

    RESPUESTA

    El ejemplo es exactamente igual que el del formulario que hemos relatado en este artículo. Lo único que, en el cuerpo del mensaje debes componer otro texto utilizando las variables que necesitas.

    Por: Pablo
    22/2/04
    Mi duda es: si yo lo programo para que funcione en mi maquila ( Instalado PHP apache etc.) y luego lo paso a un servidor pago, en el mismo funcionaria. Ya que no tengo la posibilidad de programar el smtp.

    RESPUESTA

    Funcionará perfectamente en el servidor donde lo alojes, sin cambiar ningún código.

    Es responsabilidad de la empresa que te aloja la página web tener correctamente configurado el sistema para enviar los correos electrónicos con PHP. Así pues, si algo no funciona, te tienen que prestar soporte y configurar el servidor para que funcione.

    Por: Oso Veloz
    16/3/04
    Para los que tienen dudas con el "action de formulario", es decir el archivo "envia_form_php.php", pueden reemplazarlo por:

    <form action='".$PHP_SELF."' method='post'>
    Por: Edu
    19/3/04
    A mi no me funciona, sale el mensaje :"Gracias por rellenar el formulario. Se ha enviado correctamente." pero en mi correo no recibo nada.

    RESPUESTA

    Lo primero para saber si realmente se ha enviado bien o no ese correo electrónico sería utilizar lo que devuelve la función mail(). Si devuelve true es que se envió el mensaje, en caso contrario, es que no se pudo enviar el mensaje por algún error. El código quedaría algo como esto:

    if (mail("admin@tudominio.com","Formulario recibido",$cuerpo))
      echo "todo correcto";
    else
      echo "No se pudo enviar el correo";

    Además, puede ocurrir que, aunque PHP envíe el mensaje, tu servidor lo rechace por estar configurado correctamente o enviado a través de un servidor que no corresponde con el dominio de la dirección de correo electrónico. (algunos servidores de correo hacen comprobaciones de este estilo para asegurar que los mensajes no son spam).

    Por: ToniJ
    06/4/04
    Existe un pequeño error es este script ( también puede ser debido al servidor ). Para que el formulario se envie de forma correcta o al menos llegue, para pasar de campo en campo has de utilizar "TAB", no el click del ratón. Si utilizas "TAB" el mail llega, de lo contrario, si utilizas para pasar de campo en campo el clik del ratón, no lo hace.
    Por: Juanito
    20/4/04
    Yo quería copmentar que quizá haya a quien no le funcione este este codigo al crear su propio formulario php, en mi caso no me funcionaba porque la acción del formulario tenía un nombre distinto al del propio archivo que lo contiene. Es decir que si tu pagina se llama formulario.php en la acción del formulario debes de poner formulario.php
    Por: Harry Peñaranda
    22/4/04
    he desarrollado una pagina en php con base de datos, y he logrado enviar reportes correctamente usando la funcoin mail() de php, pero, el problema es que cuando trate de mejorar la presentacion de los reportes agregando codigo html para crear marcos y tablas, el problema es que al abrir el mail recibido, lo que veo es el codigo html y eso no es el resultado deseado... existe alguna forma que el correo tradusca ese codigo html y no mostrarlo como texto simple?

    RESPUESTA

    En las header del mensaje debes configurar el formato del email (texto plano / HTML).

    Por ejemplo, así llegaría en formato HTML:

    $headers_mensaje = "From: correo@dominio.com\r\n" . "Reply-To: correo@dominio.com\r\n" . "Return-path: correo@dominio.com\r\n" . "MIME-Version: 1.0\n" . "Content-type: text/html; charset=iso-8859-1";

    Por: Vinfo
    13/7/04
    Muy bueno y sencillo el código; pero como se adiciona para enviar el cuerpo del mensaje como un Html, es decir que pueda insertar tags de Html; esto para dar una mejor presentación en el correo que recibe. Saludos,
    Por: Joel Márquez
    26/7/04
    Muy buen Script, 100% configurable, y personalizable, vengo usando ASP desde hace ya 2 años y recien estoy realizando ahora sitios con PHP, y de verdad esta función mail es muy poderosa.
    Por: Rodris
    28/7/04
    Ok .. barbaro .. lo copie y pegue .. y funciono perfectamente .. pero cuando le fui a agregar un campo me decia el form se envio correctamente, pero nunca llego a mi mail..

    Bueno pero en mi caso fue por que copie el campo nombre y lo pegue, y como esta "nombre" entre comillas no me funcionaba, despues copie y pegue uno de los otros campos y funciono correctamente ... no se si entiende .. pero bueno ... si a aguien le pasa lo mismo escriban nomas que tratare de explicarlo mejor .. pero no pregunten por que, porque no se..
    Por: Diegolon
    07/8/04
    Gracias por todo!
    Con respecto al funcionamiento del script, ¿no deberia estar encerrado entre comillas los name de email y comment en el formulario?

    Chicos sigan con el sitio que esta barbaro.
    Por: StorM
    30/9/04
    Estoy muy agradecida con ustedes porque este código funciona correctamente y es muy claro! Que chevere que se distribuya el conocimiento para que sea de dominio de todos. Muchas gracias!
    Por: lillonix
    09/11/04
    Saludos Man, experimenté con el form y funciona, pero es posible validar los campos para evitar que se escriban en ellos cualquier cosa?, además, es posible cambiar el encabezado que llega a la casilla email que dice nobody?? Gracias y saludos, Lillonix
    Por: Chuletas
    15/12/04
    Efectivamente excelentes tutoriales, FELICITACIONES!
    Por: xchimalli
    19/1/05
    A mi me resulto muy bien y utilize el codigo en un Servidor Gratuito de Lycos, ya que te permite manejar PHP y MySQL, te inscribes y activas los servicios de PHP y MySQL,subes el index.html ye el archivo envia_form_php.php lo unico que hice fue de la pagina principal crear un hipervinculo hacia la pagina envia_form_php.php y asunto arreglado funciona a la perfeccion... Gracias y espero haber ayudado con esta informacion
    Por: Omar Hernández
    12/2/05
    Hola, el formulario funciona perfecto, con el también he podido mandar mails a otros usuarios, el problema que tengo es que al mandar mails al correos de hotmail nomas llegan si los mando como html, no se si el problema esten en lo que le pongo a la funcion mail de php: $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; . Con cualquier otro correo funciona perfecto exepto con los de hotmail. !AYUDAAA!
    Por: Rafhael
    24/2/05
    Hola, Muy buen tutorial, y mejor el retorno del e-mail al usuario que lo llena, lo unico es que el "from" llega a nombre de "Nobody, nobody@zion.reaktormedia.com" Hay manera de personalizar eso? Gracias!
    Por: Marcnoman
    26/2/05
    Warning: mail(): "sendmail_from" not...

    Hola, espero poder ayudar a alguien con esta solución al probema: Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing

    Resulta que en su día, al configurar el php.ini no me fije que en el parametro [mail] la variable mail_from esta comentada i no activada. Así como otras variables de configuración por defecto aparecen activadas esta no ya que esta preparado para windows i Linux.

    Solo tienes que quitar el ; que hay en el principio de la variable.

    Para aquellos que la variable del php.ini esté activa esta respuesta no les servirá de ayuda.
    Por: Rafalin
    02/3/05
    Fantastico script, funciona a la perfección, aunque tuve un problema que se me arregló añadiendo "\r\n" al componer el cuerpo del correo, en vez de "\n". Mi consulta viene porque me interesaría que el correo cuando se abriera por parte del receptor, mandara confirmación de apertura. Gracias
    Por: CESARCHILE
    14/4/05
    Me funciono a la perfección. Los felicito. Por otro lado, quice insertar un campo para adjuntar archivo, revise el correo y me llego el texto, no así el archivo adjunto...Me podrián guiar? gracias y repito..los felicito
    Por: Cristian
    19/4/05
    }else{
    //Estoy recibiendo el formulario, compongo el cuerpo
    $cuerpo = "Formulario enviado\n";
    $cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . "\n";
    $cuerpo .= "Email: " . $HTTP_POST_VARS["email"] . "\n";
    $cuerpo .= "Comentarios: " . $HTTP_POST_VARS["coment"] . "\n";

    //from, de quien llega

    $cabeceras .= "From: dequienes <tu@email.cl>\r\n";
    //mando el correo...
    mail("admin@tudominio.com","Formulario recibido",$cuerpo,$cabeceras);

    //doy las gracias por el envío
    echo "Gracias por rellenar el formulario. Se ha enviado correctamente.";
    }

    // espero les sirva ya que personaliza la enviada del correo

    tengo mas codigos reacondicionados por mi
    info@mientrasbuscaspega.cl
    Por: thecult
    24/4/05
    Hola, a todos los que tienen windows98 y les da el siguiente problema:

    Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing

    acordaos de quitar el punto y coma de mail_from en php.ini pero no sólo en el php.ini que está dentro de php... ¡acordaos del php.ini que está en el directorio windows!

    me ha costado un montón de qubraderos de cabeza, espero que le ayude a alguien

    un saludo
    Por: Cristian
    29/4/05
    he encontrado un script que permite mandar un formulario con archivo adjunto..si alguien lo necesita gustoso se lo mando, he modificado una parte de el, eso si minimamente, pero funciona super bien, ya lo he probado..no lo pongo aca por que es un poco largo pero no tengo dramas en mandarlo
    Por: Jose Rafael
    15/5/05
    Tengo un formulario que esta compuesto por una tabla de 2 columnas y 16 filas. La columna del lado izquierdo contiene las preguntas y la columna del lado derecho contiene el campo para que el usuario responda. Una vez que relleno el formulario y le doy a enviar, me llega perfecto a mi correo. Pero...como hago para que llege a mi correo en una tabla con 2 columnas y 16 filas y no con un simple texto: Gracias !

    RESPUESTA

    Pues tienes que enviar el mensaje en formato HTML, incluyendo dentro del mensaje el código HTML necesario para que se vean las tablas tal como quieres.

    En otro comentario de este artículo ya hemos explicado como modificar las headers del mensaje para que se envíe en formato HTML.

    Por: Javier
    19/5/05
    El script funciona correctamente en mi servidor que es linux. Lo unico q me gustaria implementar que una vez enviado no devuelva el mensaje echo() y si me devuelva a la pagina principal.

    RESPUESTA

    Entonces debes utilizar la función header() de PHP. Un ejemplo sería:

    header ("location: http://www.elsitio.com")

    La ruta que pones en el location puede ser relativa. Por ejemplo algo como:

    header ("location: ../index.php")

    Atención: Antes de hacer una llamada a esta función no se debe haber escrito nada en la página.

    Por: LEONET
    23/5/05
    Debido a que muchas personas tenemos esta duda, mejor dicho teniamos, porque ya lo descifre, pego el codigo para que este espectacular formulario llegue sin el famoso "nobody" en el campo DE, sino con el correo del que lo lleno, en este pedacito esta el secreto.

    $cuerpo .= "Relativo: " . $HTTP_POST_VARS["relativo"] . "\n";
    //Este es un ejemplo, es el ultimo campo del formulario que el usuario lleno.
    $cabeceras .= "From: $email\r\n";
    mail("webmaster@tatati.net","$relativo",$cuerpo,$cabeceras);


    Y listo el formulario, como ves es solo agregar la cabecera y luego agregar en "mail" a lo ultimo $cabecera y ya.
    Por: Enrique David
    20/11/05
    Hola ¿que tal?. Solo queria deciros que para recibir una confirmación de apertura, tan solo teneis que añadir la siguiente linea a las cabeceras de los correos:

    Disposition-Notification-To: correo@electronico.es

    SOLO ERA ESTO, saludos.
    Por: Erick
    26/1/06
    me parece muy bueno el codigo que pusieron por aqui, me funciona muy bien, corrigiendo algunas cosillas pero nada para espantarse ahora mi duda es si puedo crear algo parecido pero pudiendo agregar un archivo adjunto, soy mas o menos nuevo en esto y he buscado tutoriales sobre lo que busco y no he tenido suerte, espero que aqui puedan sacarme de esta duda, GRACIAS !
    Por: William
    11/2/06
    Gracias a Dios que existe desarrolloweb.com este es el script mas facil que e encontrado en la red para enviar formularios por email demasiado de facil de utilizar, copialo, pegalo y listo.Que Dios los sigua iluminando.Gracias
    William, de Puerto Rico
    Por: Sandra Largo Lopez
    20/4/06
    Estoy muy agradecida por los articulos que publican en este sitio web, hace unos tres años diseño paginas web y estoy iniciando en el desarrollo con php de las mismas y no sabia como recibir los datos de un formulario y enviarlos a un email, hoy he aprendido! Muchisimas gracias a los creadores de este Web Site!
    Por: Noé
    16/5/06
    Hola, tengo mi servidor web apache con PHP y copie el codiogo tal y como esta solo modifique el correo a mandar. lo ejecute desde mi navegador y aparecio ke habia enviado el correo pero nunca lo envio a que se debe esto, lei algo asi de un servidor SMTP y ese no lo tengo instlado, ojalá puedan ayudarme GRACIAS
    Por: Ignacio
    29/5/06
    Solamente quiero daros las gracias y mi mas sincera enhorabuena un articulo de lo mas sencillo y eficaz Gracias.
    Por: Bline
    11/6/06
    El unico GRAN problema sq cuando se te keda al final en la web con el mensaje de enviado, akel que sea listo y kiera joder le dara a f5 hasta saciarse y con ello te hara un flood increible en el buzon. Saludos
    Por: Alan
    06/9/06
    muchas gracias.. me sirvio muchisimo esto para entender un poco lo que es php.. y lo que puedo hacer con el.
    Por: VPM
    23/9/06
    Hola, para los que tienen el problema con paginas PHP y les da este error
    deben revisar en el IIS
    Propiedase- Home Directory -configuracion
    App Mappings aki se debe revisar si esta agregada la extencion .PHP si no esta agregarla.
    Se agrega el archivo PHP.exe que esta en el path donde se instalo PHP

    Saludos
    espero que les sirva
    Por: Juan David
    27/6/07
    No seria mas facil ponerlo asi:

    <form action="(nombre).php" method=post>
    (Campos del formulario)
    </form>
    </body>
    </html>

    Al tener el form action= esta obteniendo el archivo php siguiente:

    <?
    }else{
    //Estoy recibiendo el formulario, compongo el cuerpo
    $cuerpo = "Formulario enviado ";
    $cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . " ";
    $cuerpo .= "Email: " . $HTTP_POST_VARS["email"] . " ";
    $cuerpo .= "Comentarios: " . $HTTP_POST_VARS["coment"] . " ";

    //mando el correo...
    mail("admin@tudominio.com","Formulario recibido",$cuerpo);

    //doy las gracias por el envío
    echo "Gracias por rellenar el formulario. Se ha enviado correctamente.";
    }
    ?>

    Eso creo
    Por: pako
    28/6/07
    por fin he encontrado un formulario que funciona. gracias por el trabajo que realizas y las soluciones que dás a los que estamos comenzando con php.
    un saludo.
    Por: Dani
    17/7/07
    Es un articulo genial, muy didactico, sencillo y util. Gracias. Muchas Gracias.
    Además aprovecho para felicitaros por vuestra excelente labor.
    Por: maria
    07/8/07
    hola desarrollo web solo quiero felicitarlos por el excelente trabajo que realizan.
    Por: Juan Pablo Morales
    25/8/07
    Por fin! Gracias al tutorial puedo tener mi propio formulario! Me ha funcionado correctamente todo, muchas gracias ;).
    Por: Felipe
    07/9/07
    si alguien llega a tener el mismo problema que yo tuve aqui esta la solucion

    http://email.about.com/od/emailprogrammingtips/qt/et073006.htm
    Por: jose luis
    21/9/07
    he escrito a mi distribuidor de hosting, y me ha respondido;
    Ese método de acceso a variables POST está obsoleto desde hace años.
    Por favor consulte la documentación para ver los cambios.

    Este enlace puede ayudarle:
    http://es.php.net/reserved.variables

    a mi pregunta;
    vale, me refria al metodo post de html, este archivo especifico
    > http://www.xxxxxxxx.com/contacta.php en un servidor xaamp de php en local
    > funciona correctamente, pero ese mismo archivo subirlo a mi vps linux que
    > esta contratado con vosotros no funciona, este es el metodo de recepcion
    > $HTTP_POST_VARS, me podrian ajudar
    Por: Cesar Figueroa
    01/10/07
    Del primer formulario que esta al inicio del tada la web, este me permite enviar nombre, email y mensaje, pero como yo podria colocar que el campo de email sea obligatorio, que si no lo llenan que no envie el mensaje a nuestros correo.s
    Saludos.- GRAICAS
    Por: Karen
    15/11/07
    Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()

    Cuando intento enviar un correo me aparece este mensaje, rebice mi php.ini y esta configurado de esta forma:

    [mail function]
    ; For Win32 only.
    SMTP = localhost
    smtp_port = 25

    por favor diganme que le falta o le sobra!!! :S
    Por: Ariel
    23/11/07
    Gracias!!, por fin un formulario que anda...Gracias...TOTALES.-
    Por: Cristian Lezcano
    14/3/08
    Bueno he leido varios comentarios pero ninguno resuelve los errores.. en el error de From .solo corrige. por ahi esta un codigo correcto que utiliza el From.. ahora cuando sale el error Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25... pues teneis q tener instalado en tu compu . un servidor de correos.. eso es todo..Espero haber resuelto sus dudas...
    Por: dark
    21/3/08
    Hola,. en cuanto a las personas que no pueden enviar correo porque les da el error de la configuracion de SMTP, deben abrir el archivo php.ini que normalmente esta en la carpeta apache/bin,. en el archivo buscan la configuracion mail function y la modifican. ejemplo. .. (solo para windows...)

    [mail function]
    ; For Win32 only.
    SMTP = mail.cantv.net (aqui colocas el smtp que esta en tu outlook)
    smtp_port = 25

    ; For Win32 only.
    sendmail_from = yo@cantv.net ( tu correo - el origen )

    soycomi...
    ¿Cómo hacer un campo obligatorio en este formulario php?
    25/5/09
    Hola buenas.

    Me interesa mucho saber cómo hacer que uno de los campos sea obligatorio.

    He leido que con Javascript no es seguro, que es mejor con PhP.

    He intentado implementar el código viendo otros ejemplos, pero no pude.

    Porfavor, sería muy útil.

    Gracias

    nani242...
    No se direcciona
    19/6/09
    hola ya me llega el mensaje y todo pero no se me redirecciona a la pagina donde ya le puse el codigo pero me sale error en la inea 40
    header ("location: ../index.php") le pongo ese codigo, luego dice que no tiene que tener escritura la pagina cual pagina no le entendi en eso.

    benjami...
    No funciona al cambiar de servidor
    23/7/09
    He utilizado estupendo manual para realizar varios formularios sin ningún tipo de problema. Ahora he cambiado de servidor y ha dejado de funcionar (sin hacer ningún tipo de cambio). He preguntado a la empresa donde lo tengo alojado ahora (comerciosonline.com) y me han contestado lo siguiente: "Nuestros servidores soportan php 5.1 y mysql, tendría que revisar la programación de su página web para ver donde no está funcionando correctamente."
    ¿Tengo que hacer algún cambio en el dódigo?
    Muchas gracias por vuestra respuesta.

    romina4...
    PHP
    03/8/09
    Muy buen aporte lo utilizare en el <a href="http://www.developerusoft.com/" title="desarrollo de aplicaciones web">desarrollo de aplicaciones web</a>.

    gman
    recorte
    10/8/09
    hola me sirvio para hacer el archivo q no podia solucionarme el dolor de cabeza, email.php

    cce
    agregar link en el cuerpo del mail
    03/9/09
    hola a todos..qisiera poder agregar un link dentro del cuerpo del mail, de la funcion mail() de php. Por ejemplo:
    $message= " buen dia, si qiere ingresar a nuestro sitio haga click aqui..."...y donde dice aqui, haya un link a mi pagina....como lo puedo hacer con esta funcion?..Gracias.-

    johnlop...
    localhost debería mandar el mail realmente?
    12/9/09
    Bueno, eso, a mi me limpia el formulario pero no me está mandando el mail y no me está haciendo el echo final que avisa que el formulario fue enviado.
    Coloco aquí el código, la página se llama Contacto.php

    <body onLoad="javascript:document.formulario.nomape.focus ();">
    <?
    if (!$HTTP_POST_VARS){
    ?>
    <form method="post" name="formulario" action="Contacto.php" enctype="text/plain">
    <fieldset>
    <legend id="campo">Comun&iacute;quese con nosotros <span class="Estilo2">(todos los datos son obligatorios)</span></legend>
    <div class="datos">
    <div class="nomdat">
    <label for="nomape">Nombre y Apellido</label>
    </div>
    <div class="cajadat">
    <input title="Nombre" class="caja1" id="nomape" name="Nombre" type="text" size="70" maxlength="70" onFocus="resaltar(this)" onBlur="valido_nombre(this)" />
    </div>
    </div>
    <div class="spacer"> </div>
    <div class="datos">
    <div class="nomdat">
    <label for="Mail">E - Mail</label>
    </div>
    <div class="cajadat">
    <input title="Mail" class="caja1" id="Mail" name="Mail" type="text" size="50" maxlength="50" onBlur="valido_mail(this)" onFocus="resaltar(this)" />
    <br/>
    </div>
    </div>
    <div class="spacer"> </div>
    <div class="datos">
    <div class="nomdat">
    <label for="Tel">Tel&eacute;fono y/o Celular</label>
    </div>
    <div class="cajadat">
    <input title="Tel&eacute;fono" class="caja1" id="Tel" name="Telefono" type="text" size="25" maxlength="35" onFocus="resaltar(this)" onBlur="valido_telefono(this)"/>
    </div>
    </div>
    <div class="spacer"> </div>
    <div>
    <label for="Coment">Comentarios o preguntas</label>
    <br />
    <textarea title="Comentarios" class="caja1" id="Coment" name="Comentarios" rows="7" cols="70" onFocus="resaltar(this)" onBlur="volver(this)"></textarea>
    <br />
    <br />

    <input type="submit" value="enviar" />
    <input type="reset" value="limpiar" />
    </div>
    </fieldset>
    </form>
    </div>
    </div>
    <?
    }else{

    //Estoy recibiendo el formulario, compongo el cuerpo
    $cuerpo = "Formulario enviado ";
    $cuerpo .= "Nombre: " . $HTTP_POST_VARS["Nombre"] . " ";
    $cuerpo .= "Email: " . $HTTP_POST_VARS["Mail"] . " ";
    $cuerpo .= "Tel.: ". $HTTP_POST_VARS["Telefono"] . " ";
    $cuerpo .= "Comentarios: " . $HTTP_POST_VARS["Comentarios"] . " ";


    mail("mimail@gmail.com","Formulario recibido",$cuerpo);

    echo "Gracias por completar el formulario. Se ha enviado correctamente.";
    }
    ?>
    </body>
    </html>

    mnica_b...
    Envío de Formulario
    30/9/09
    johnlop no se si lo has solucionado ya, pero sino tienes que cambiar la variable $HTTP_POST_VARS por $_POST y te enviará el mail correctamente
    HTTP_POST_VARS en 5.3.0
    13/10/09
    Cuando utilizo esta línea de código en 5.3.0
    if (!$HTTP_POST_VARS){

    me sale el error
    Notice: Undefined variable: HTTP_POST_VARS in...

    Alguien sabe como adaptarlo?

    Gracias y saludos

    angelgu...
    formulario de contacto con autorespondedor
    07/1/10
    Hola, ante todo un gran saludo por Nuevo Año 2010!, a ver quien puede ayudarme, yo hice el diseño de mi pagina web de poco a poco y la verdad pues me sumergi mucho en este mundo , que hasta ahora no se como lo hice, es fantastico ya que me mantenia ocupado en mis momentos aburridos, y bueno tengo una consulta el for de contactenos, yo tengo creado mi formulario en html, y el formulario en php, http://www.vgmaquinarias.com/Index-4.html , lo que me falta es tener mas campos de texto, este modelo lo saque de otra pagina gratis, pero yo quiero que tengas mas opciones, yo entiendo que hay que editar el formulario php, a ver si hay alguien que me ayude en esto de la edicion, solo quiero tener el siguiente orden, lo que falta por favor agreguenle en el formulario php que mas abajo les pongo, y bueno el siguiente orden es que lo que yo necesito tener en mi formulario, y que tambien sean obligatorios llenar las casillas aunque este ya tiene. (cuando alguien te escribe de tu formulario web, llega el mensaje a tu correo y en el remitente sale su correo directo de la persona quien te escribio y asi es mas facil responder directamente, y tambien sale el IP y la hora de envio)
    Nombres :
    Pais :
    Ciudad :
    E-mail :
    Tema de consulta :
    Consulta o Comentario :

    Este es el contenido de mi formulario php , cuando envien el mensaje le devuelva a otra pagina avisando que se a enviado correctamente y tambien con una copia del mensaje que le llega al correo del remitente, es con autocontestador, eso es todo y gracias

    <?
    /**
    * - sending mail via form
    *
    * Author: Alex Scott
    * Details: The installation file
    * Release: 1.1 ($Revision: 1.6 $)
    *
    * A U T O R E S P O N D E D O R
    *
    */

    /*****************************************************************************
    * *
    * C O N F I G U R A C I O N *
    * *
    *****************************************************************************/

    // MODIFICA TU EMAIL AQUÍ //////////////////////////////////////////
    // si está vació usará el email del campo ('send_to')
    $send_to = "<nombre@tudominio.com>";

    // Configura $send_cc si deseas enviar otra copia de la orden de hosting a otro email
    // por ejemplo: $send_cc = array('O.COM'');
    $send_cc = array('nombre@msn.com', 'nombre@hotmail.com');

    // MODIFICA AQUÍ el Subject o Título del email que recibirás en tu correo
    // Puedes modificarlo si deseas recibirlo con otro nombre
    $subject = "Consulta desde Sitio web ";

    // No modificar
    $referrers = array();

    // No modificar - Si deseas puedes incluir el envio de archivos, valor 1 si, 0 no.
    $attachment_enabled = 0;

    // No modificar - Database - write CSV file with data of submitted forms //////////////
    $database_enabled = 0;
    $database_file = 'email.csv';

    // Fields to collect
    // $database_fields = '*' - mean all fields, as in form
    // $database_fields = array('from', 'subject') - only 'from', 'subject' fields
    $database_fields = '*';

    //////MODIFICA AQUÍ Dirección URL después de procesar el formulario
    $redirect_url = 'http://www.tudominio.com/thanks.html';

    ////// AutoRespondedor
    ////// Puedes cambiar cualquiera de los campos usando...
    ////// %nombre_campo% en el email de respuesta.
    //////
    $autoresponder_enabled = 1;
    $autoresponder_from = $send_to;
    $autoresponder_subject = "Tu Mensaje ha Sido recibido ";
    $autoresponder_message = <<<MSG

    %nombre_req%:

    Tu pregunta o comentario ha sido recibido

    Te responderé en breve plazo.

    Muchas Gracias.

    http://www.tudominio.com/

    ___________________
    Tu mensaje fué:
    %comentarios%



    ----------------------------------------------------------------------------


    MSG;

    /***************************************************************************/

    function do_formmail(){
    global $autoresponder_enabled, $database_enabled;
    $form = get_form_data();
    $errors = check_form($form);
    if ($errors) {
    display_errors($errors);
    return;
    }
    send_mail($form);
    if ($autoresponder_enabled)
    auto_respond($form);
    if ($database_enabled)
    save_form($form);
    redirect();
    }

    function redirect(){
    global $redirect_url;
    header("Location: $redirect_url");
    exit();
    }


    function save_form($vars){
    global $database_file, $database_fields;
    $f = fopen($database_file, 'a');
    if (!$f){
    die("Cannot open db file for save");
    }
    foreach ($vars as $k=>$v) {
    $vars[$k] = str_replace(array("|", " "," "), array('_',' ',' '), $v);
    }
    if (is_array($database_fields)) {
    $vars_orig = $vars;
    $vars = array();
    foreach ($database_fields as $k)
    $vars[$k] = $vars_orig[$k];
    }
    $str = join('|', $vars);
    fwrite($f, $str." ");
    fclose($f);
    }

    function auto_respond($vars){
    global $autoresponder_from, $autoresponder_message, $autoresponder_subject;
    /// replace all vars in message
    $msg = $autoresponder_message;
    preg_match_all('/%(.+?)%/', $msg, $out);
    $s_vars = $out[1]; //field list to substitute
    foreach ($s_vars as $k)
    $msg = str_replace("%$k%", $vars[$k], $msg);
    /// replace all vars in subject
    $subj = $autoresponder_subject;
    preg_match_all('/%(.+?)%/', $subj, $out);
    $s_vars = $out[1]; //field list to substitute
    foreach ($s_vars as $k)
    $subj = str_replace("%$k%", $vars[$k], $subj);
    //
    $_send_to = "$vars[name_from] <".$vars[email_from].">";
    $_send_from = $autoresponder_from;
    mail($_send_to, $subj, $msg, "From: $_send_from");
    }

    function _build_fields($vars){
    $skip_fields = array(
    'name_from',
    'email_from',
    'email_to',
    'name_to',
    'subject');
    // order by numeric begin, if it exists
    $is_ordered = 0;
    foreach ($vars as $k=>$v)
    if (in_array($k, $skip_fields)) unset($vars[$k]);

    $new_vars = array();
    foreach ($vars as $k=>$v){
    // remove _num, _reqnum, _req from end of field names
    $k = preg_replace('/_(req|num|reqnum)$/', '', $k);
    // check if the fields is ordered
    if (preg_match('/^d+[ :_-]/', $k)) $is_ordered++;
    //remove number from begin of fields
    $k = preg_replace('/^d+[ :_-]/', '', $k);
    $new_vars[$k] = $v;
    }
    $vars = $new_vars;

    $max_length = 10; // max length of key field
    foreach ($vars as $k=>$v) {
    $klen = strlen($k);
    if (($klen > $max_length) && ($klen < 40))
    $max_length = $klen;
    }

    if ($is_ordered)
    ksort($vars);

    // make output text
    $out = "";
    foreach ($vars as $k=>$v){
    $k = str_replace('_', ' ', $k);
    $k = ucfirst($k);
    $len_diff = $max_length - strlen($k);
    if ($len_diff > 0)
    $fill = str_repeat('.', $len_diff);
    else
    $fill = '';
    $out .= $k."$fill...: $v ";
    }
    return $out;
    }


    function send_mail($vars){
    global $send_to, $send_cc;
    global $subject;
    global $attachment_enabled;
    global $REMOTE_ADDR;

    global $HTTP_POST_FILES;
    $files = array(); //files (field names) to attach in mail
    if (count($HTTP_POST_FILES) && $attachment_enabled){
    $files = array_keys($HTTP_POST_FILES);
    }

    // build mail
    $date_time = date('Y-m-d H:i:s');
    $mime_delimiter = md5(time());
    $fields = _build_fields($vars);
    $mail = <<<EOF
    This is a MIME-encapsulated message

    --$mime_delimiter
    Content-type: text/plain
    Content-Transfer-Encoding: 8bit

    El mensaje enviado es:
    $fields
    --------------------
    Numero IP : $REMOTE_ADDR
    Fecha y Hora : $date_time
    EOF;

    if (count($files)){
    foreach ($files as $file){
    $file_name = $HTTP_POST_FILES[$file]['name'];
    $file_type = $HTTP_POST_FILES[$file]['type'];
    $file_tmp_name = $HTTP_POST_FILES[$file]['tmp_name'];
    $file_cnt = "";
    $f=@fopen($file_tmp_name, "rb");
    if (!$f)
    continue;
    while($f && !feof($f))
    $file_cnt .= fread($f, 4096);
    fclose($f);
    if (!strlen($file_type)) $file_type="applicaton/octet-stream";
    if ($file_type == 'application/x-msdownload')
    $file_type = "applicaton/octet-stream";

    $mail .= " --$mime_delimiter ";
    $mail .= "Content-type: $file_type ";
    $mail .= "Content-Disposition: attachment; filename="$file_name" ";
    $mail .= "Content-Transfer-Encoding: base64 ";
    $mail .= chunk_split(base64_encode($file_cnt));
    }
    }
    $mail .= " --$mime_delimiter--";


    //send to
    $_send_to = $send_to ? $send_to : "$vars[name_to] <".$vars[email_to].">";
    $_send_from = "$vars[name_from] <".$vars[email_from].">";
    $_subject = $subject ? $subject : $vars['subject'];

    mail($_send_to, $_subject, $mail,
    "Mime-Version: 1.0 From: $_send_from Content-Type: multipart/mixed; boundary="$mime_delimiter" Content-Disposition: inline");

    foreach ($send_cc as $v){
    mail($v, $_subject, $mail,
    "Mime-Version: 1.0 From: $_send_from Content-Type: multipart/mixed; boundary="$mime_delimiter" Content-Disposition: inline");
    }

    }

    function get_form_data(){
    global $REQUEST_METHOD;
    global $HTTP_POST_VARS;
    global $HTTP_GET_VARS;

    $vars = ($REQUEST_METHOD == 'GET') ? $HTTP_GET_VARS : $HTTP_POST_VARS;
    //strip spaces from all fields
    foreach ($vars as $k=>$v) $vars[$k] = trim($v);
    return $vars;
    }

    function check_form($vars){
    global $referrers;
    global $send_to;
    global $subject;
    global $HTTP_REFERER;

    $errors = array();

    // checkear email
    if (!strlen($vars['email_from'])){
    $errors[] = "El campo <b>Email</b> está vacio";
    } else if (!check_email($vars['email_from'])){
    $errors[] = "El formato del <b>Email</b> es incorrecto";
    }
    if (!strlen($send_to) && !strlen($vars['email_to'])){
    $errors[] = "El campo <b>Email</b> está vacio (mal configurado)";
    } else if (!strlen($send_to) && !check_email($vars['email_to'])){
    //if to email specified in form, check it and display error
    $errors[] = "El formato del <b>Email</b> es incorrecto";
    }
    if (!strlen($vars['subject']) && !strlen($subject)){
    $errors[] = "<b>Subject</b> vacio, posible error en la configuración";
    }
    foreach ($vars as $k=>$v){
    // checkaer campos requeridos (Terminación req , ejemplo: campo_req)
    if (preg_match('/^(.+?)_req$/i', $k, $m) && !strlen($v)){
    $field_name = ucfirst($m[1]);
    $errors[] = "El campo <b>$field_name</b> está vacio";
    }
    // checkear campos numéricos (terminan con _num )
    if (preg_match('/^(.+?)_num$/i', $k, $m) && strlen($v) && !is_numeric($v)){
    $field_name = ucfirst($m[1]);
    $errors[] = "El campo <b>$field_name</b> debe contener solo digitos o estar vacio";
    }
    // checkear por campos numéricos y campos requeridos, ambos; (terminan _reqnum)
    if (preg_match('/^(.+?)_reqnum$/i', $k, $m) && !is_numeric($v)){
    $field_name = ucfirst($m[1]);
    $errors[] = "El campo <b>$field_name</b> debe contener solo digitos";
    }
    }

    //check referrer
    if (is_array($referrers) && count($referrers)){
    $ref = parse_url($HTTP_REFERER);
    $host = $ref['host'];
    $host_found = 0;
    foreach ($referrers as $r){
    if (strstr($host, $r))
    $host_found++;
    }
    if (!$host_found){
    $errors[] = "Unknown Referrer: <b>$host</b>";
    }
    }
    return $errors;
    }

    function display_errors($errors){
    $errors = '<li>' . join('<li>', $errors);
    print <<<EOF
    <html>
    <head><title>Error</title></head>
    <body bgcolor=white>
    <h3 align=center><font color=red>Un Error ha Ocurrido</font></h3>
    <hr width=80%>
    <table align=center><tr><td>
    $errors
    </td></tr></table>
    <p align=center>
    Por favor presiona <a href="javascript: history.back(-1)">volver</a> para solucionar este error.
    </p>
    <hr width=80%>
    <center>
    </center>
    </body></html>
    EOF;
    }


    /**
    * Check email using regexes
    * @param string email
    * @return bool true if email valid, false if not
    */
    function check_email($email) {
    #characters allowed on name: 0-9a-Z-._ on host: 0-9a-Z-. on between: @
    if (!preg_match('/^[0-9a-zA-Z.-\_]+@[0-9a-zA-Z.-]+$/', $email))
    return false;

    #must start or end with alpha or num
    if ( preg_match('/^[^0-9a-zA-Z]|[^0-9a-zA-Z]$/', $email))
    return false;

    #name must end with alpha or num
    if (!preg_match('/([0-9a-zA-Z_]{1})@./',$email) )
    return false;

    #host must start with alpha or num
    if (!preg_match('/.@([0-9a-zA-Z_]{1})/',$email) )
    return false;

    #pair .- or -. or -- or .. not allowed
    if ( preg_match('/..-.|.-..|....|.--./',$email) )
    return false;

    #pair ._ or -_ or _. or _- or __ not allowed
    if ( preg_match('/..\_.|.-\_.|.\_..|.\_-.|.\_\_./',$email) )
    return false;

    #host must end with '.' plus 2-5 alpha for TopLevelDomain
    if (!preg_match('/.([a-zA-Z]{2,5})$/',$email) )
    return false;

    return true;
    }

    do_formmail();
    ?>

    igarcia...
    aasc
    21/1/10
    ascascasc

    marc_eg
    Pues yo tengo algo parecido que no funciona
    06/2/10
    Buenas tardes:

    Leyendo este articulo me ha venido en la cabeza que yo tengo algo parecido y que no he conseguido que me funcione. Me explicaré adaptando el código a este ejemplo:

    Mi objetivo es que los clientes rellenen el formulario que despues puedan comprovar lo que han escrito entes de enviarlo y que pongan el captcha de seguridad. La cuestion es que no consigo que funcione.

    Veamos mejor el codigo:

    <?php
    session_start();
    ?>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title>Mándanos tus comentarios</title>
    </head>

    <body bgcolor="#cccc66" text="#003300" link="#006060" vlink="#006060">
    <?php

    // Si la variable esta vacia muestra el formulario que se autoenvia

    if (!$HTTP_POST){
    ?>
    <form action="envia_form_php.php" method=post>
    Nombre: <input type=text name="nom" size=16>
    <br>
    Email: <input type=text name=email size=16>
    <br>
    Comentarios: <textarea name="coment" cols=32 rows=6></textarea>
    <br>
    <input type=submit value="Enviar">
    </form>
    <?php

    // Si esta lleno salta aqui y muestra los valores de las variables y el captcha de verificacion

    }else{
    ?>

    <form method="POST">
    Has escrito:
    Nomgre: <? $HTTP_POST["nom"] ?>
    email: <? $HTTP_POST["email"] ?>
    comentarios: <? $HTTP_POST["coment"] ?>

    <!-- pongo el captcha -->
    <div style="width: 430px; float: left; height: 90px" border=1>
    <img id="siimage" align="left" style="padding-right: 5px; border: 0" src="securimage_show.php?sid=<?php echo md5(time()) ?>" />
    <br />
    <a tabindex="-1" style="border-style: none" href="#" title="Refresh Image" onclick="document.getElementById('siimage').src = 'securimage_show.php?sid=' + Math.random(); return false"><img src="images/refresh.gif" alt="Canvia la imagen" border="0" onclick="this.blur()" align="bottom" /></a>
    </div>
    <div style="clear: both"></div>
    Codigo:<br />
    <input type="text" name="code" size="12" /><br /><br />
    <input type="submit" value="Submit Form" />
    </form>

    <?php

    // Ahora verifico el captcha

    include("securimage.php");
    $img = new Securimage();
    $valid = $img->check($_POST['code']);

    // Si el captcha es correcto: cargo, envio el mail y doy gracias

    if($valid == true) {
    echo "<center>Gracias por en envio.<br />Clica <a href="{$_SERVER['PHP_SELF']}">aqui</a> para volver atras.</center>";

    $cuerpo = "Formulario enviado ";
    $cuerpo .= "Nombre: " . $HTTP_POST["nom"] . " ";
    $cuerpo .= "Email: " . $HTTP_POST["email"] . " ";
    $cuerpo .= "Comentarios: " . $HTTP_POST["coment"] . " ";

    mail("info@dominio.com","Formulario",$cuerpo);

    } else {

    // Si el captcha es incorrecto: mensajito y para atras

    echo "<center>Perdona, no has entrado bien el codigo. Vuelve <a href="javascript:history.go(-1)">atras</a> e intentalo de nuevo.</center>";
    }
    }

    ?>

    </body>
    </html>

    Agradeceria una mano experta.

    harold1...
    enviar formulario php
    06/3/10
    esta muy bueno y sencillo codigo del formulario pero tengo un problema lo hice tal cual en tutorial pero utilizo el dreamweaver y al darle vista previa en ie me dice que hay un error de sintasys error9 tengo mi servidor en iespana.
    espero se entienda .
    gracias

    harold1...
    enviar formulario php
    06/3/10
    hola un saludo para todos y porfa me dicen si esta pagina todavia esta en funcionamiento por qu nunca rsponden mis dudas.
    bueno mi pregunta es la siguiente utilizo dreamweaver y al dar vista previa y probar el formulario me sale un mensaje que la pagina aun no ha sido creada.
    tengo mi pagina en el host de iespana

    nani242...
    verificar lo datos
    19/3/10
    Hola!! yo tengo el siguiente codigo, me funciona perfecto, pero no puedo validar los datos, sobre todo correo y nombre me podrian ayudar gracias.
    <?
    if ($HTTP_POST_VARS){
    //Estoy recibiendo el formulario, compongo el cuerpo
    $cuerpo = "Formulario enviado ";
    $cuerpo .= "Nombre Comercial: " . $HTTP_POST_VARS["nombre"] . " ";
    $cuerpo .= "Representarte: " . $HTTP_POST_VARS["representarte"] . " ";
    $cuerpo .= "Domicilio Fiscal: " . $HTTP_POST_VARS["domicilio"] . " ";
    $cuerpo .= "Colonia: " . $HTTP_POST_VARS["colonia"] . " ";
    $cuerpo .= "Telefono: ". $HTTP_POST_VARS["telefono"] . " ";
    $cuerpo .= "Sitio Web: ". $HTTP_POST_VARS["web"] . " ";
    $cuerpo .= "Nº Personal de Tecnicos: ". $HTTP_POST_VARS["tecnicos"] . " ";
    $cuerpo .= "Nº Personal de Ventas: ". $HTTP_POST_VARS["ventas"] . " ";
    $cuerpo .= "Nº de Sucursales: ". $HTTP_POST_VARS["sucursales"] . " ";
    $cuerpo .= "Giro: ". $HTTP_POST_VARS["giro"] . " ";

    //mando el correo...
    mail("ventas@yoyo.com.mx","Formulario recibido",$cuerpo);

    header("Location: http://www.yoyo.com.mx/sociosbenefician.php");

    //doy las gracias por el envío
    echo "Gracias por rellenar el formulario. Se ha enviado correctamente. Nos estaremos comunicando con usted.";

    } else {

    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title>Registro</title>
    </head>

    <body background="images/nod.jpg" bgcolor="#ECF8E0" text="#000000" link="#006060" vlink="#006060">

    <form action="envia_form_php.php" method=post>
    <table align="center" border="0">
    <tr>
    <td><p align="justify"><span class="subtitle"> </span><br/>
    <br/>
    <td><p align="justify"><span class="subtitle"><font color="#000000" size="7"><B>Registro de Socios </b></font></span><br/>
    <br/>
    <table align="center" border="0">
    <tr>
    <td align="left" width="100">Nombre Fiscal:
    </td>
    <td align="center" width="150"><INPUT NAME="nombre" MAXLENGTH="25" TYPE="TEXT" VALUE="">
    </td>
    <tr>
    <td align="left" width="100">Nombre Comercial:
    </td>
    <td align="center" width="150"><INPUT NAME="comercial" MAXLENGTH="25" TYPE="TEXT" VALUE="">
    </td>
    <tr>
    <td align="left" width="100">Representante:
    </td>
    <td align="center" width="150"><INPUT NAME="representante" MAXLENGTH="25" TYPE="TEXT" VALUE="">
    </td>
    <tr>
    <td align="left" width="100">Domicilio Fiscal:
    </td>
    <td align="center" width="150"><INPUT NAME="domicilio" MAXLENGTH="25" TYPE="TEXT" VALUE="">
    </td>
    <tr>
    <td align="left" width="100">Colonia:
    </td>
    <td align="center" width="150"><INPUT NAME="colonia" MAXLENGTH="25" TYPE="TEXT" VALUE="">
    </td>
    <tr>
    <td align="left" width="100">Telefono:
    </td>
    <td align="center" width="150"><INPUT NAME="telefono" MAXLENGTH="25" TYPE="TEXT" VALUE="">
    </td>
    <tr>
    <td align="left" width="100">Sitio Web:
    </td>
    <td align="center" width="150"><INPUT NAME="web" MAXLENGTH="25" TYPE="TEXT" VALUE="">
    </td>
    <tr>
    <td align="left" width="100">Nº Personal de Tecnicos:
    </td>
    <td align="center" width="150"><INPUT NAME="tecnicos" MAXLENGTH="25" TYPE="TEXT" VALUE="">
    </td>
    <tr>
    <td align="left" width="100">Nº Personal de Ventas:
    </td>
    <td align="center" width="150"><INPUT NAME="ventas" MAXLENGTH="25" TYPE="TEXT" VALUE="">
    </td>
    <tr>
    <td align="left" width="100">Nº Sucursales:
    </td>
    <td align="center" width="150"><INPUT NAME="sucursales" MAXLENGTH="25" TYPE="TEXT" VALUE="">
    </td>
    <tr>
    <td align="left" width="100">Giro:
    </td>
    <td align="center" width="150"><INPUT NAME="giro"
    MAXLENGTH="25" TYPE="TEXT" VALUE="">
    </td>
    <tr>
    <td align="right" width="150"><INPUT NAME="boton" TYPE="SUBMIT" VALUE="Enviar">
    <tr>
    </form>
    <?
    }
    ?>
    </table>
    </body>
    </html>

    Vreni
    no funciona mi envio de correo
    04/5/10
    hola a todos
    una vez que subo este codigo al servidor localhost y oprimo el boton enviar, resulta que no hace absolutamente nada. simplemente que resetea los campos, y ni siquiera me sale el mensaje que se ha enviado correctamente.

    O acaso tengo que guardar el codigo en dos archivos diferentes? Espero su ayuda y gracias de antemano

    cizte
    seleccionar destinatario
    16/6/10
    Disculpa yo quisiera que mi formulario tenga la opcion de cambiar la drecciòn de correo dependiendo de que destinatario seleccione el usuario, me podrias decir con que función lo puedo hacer? Gracias :D

    marcelo...
    Error
    18/6/10
    Yo lo hice y me tira este error: que hice mal?
    HTTP Error 405.0 - Method Not Allowed
    The page you are looking for cannot be displayed because an invalid method (HTTP verb) is being used.
    Module StaticFileModule
    Notification ExecuteRequestHandler
    Handler StaticFile
    Error Code 0x80070001
    Requested URL http://www.maipu.gov.ar:80/prueba2.html
    Physical Path \hmfswwebdtcwin087munimaipu.orgpublic_htmlprueba2.html
    Logon Method Anonymous
    Logon User Anonymous

    Aca esta como lo armé:
    <?
    $asunto = "Aca pone el ASunto del email";
    $mensaje = '
    <html>
    <head>
    <title>EL TITULO QUE QUIERAS</title>
    </head>
    <body>
    <p><font size="2" face="Verdana">Nombre: <b>'.$_POST['nombre'].'</b></font></p>
    <p><font size="2" face="Verdana">eMail: <b>'.$_POST['mail'].'</b></font></p>
    <p><font size="2" face="Verdana">Curso: <b>'.$_POST['curso'].'</b></font></p>
    </body>
    </html>
    ';
    $email="mandrescastillo@maipu.gov.ar";
    $cabeceras = "MIME-Version: 1.0 ";
    $cabeceras .= "Content-type: text/html; charset=iso-8859-1 ";
    $cabeceras .= "From: ".$_POST['nombre']." <".$_POST['mail']."> ";
    echo '
    <center> Gracias por tu consulta </center>
    <META HTTP-EQUIV="Refresh" content = "3; URL=../prueba.html">
    ';

    ?>

    Abimael...
    Código para formulario
    12/7/10
    Hola, en mi pagina web que tengo implemente el código que pongo mas abajo, pero a la hora de ponerlo a funcionar no pasa nada.

    Lleno todo el formulario (contacto.html) y le doy a enviar y me manda a "contacto.php" (asi se llama mi archivo que hice en PHP) la pagina me aparecen en solo en blanco y a la hora de revisar mi correo (???@gmail.com) no hay nada.

    ¿ Estaré poniendo algo mal? ¿Falta algo por configurar?

    < ?php
    $nombre = $_POST['nombre'];
    $mail = $_POST['mail'];
    $empresa = $_POST['empresa'];

    $header = 'From: ' . $mail . " ";
    $header .= "X-Mailer: PHP/" . phpversion() . " ";
    $header .= "Mime-Version: 1.0 ";
    $header .= "Content-Type: text/plain";

    $mensaje = "Este mensaje fue enviado por " . $nombre . ", de la empresa " . $empresa . " ";
    $mensaje .= "Su e-mail es: " . $mail . " ";
    $mensaje .= "Mensaje: " . $_POST['mensaje'] . " ";
    $mensaje .= "Enviado el " . date('d/m/Y', time());

    $para = 'mi correo@sitio.com';
    $asunto = 'Contacto desde mi pagina web';

    mail($para, $asunto, utf8_decode($mensaje), $header);

    echo 'mensaje enviado correctamente';

    ?>

    Manuales relacionados
    Categorias relacionadas
    El autor
    Lectura recomendada
    Compra este libro en Agapea, la librería urgente a domicilio.
    Últimas noticias
    Alojados en el grupo