Php: Formulario ‘Recomienda a un amigo’

Empiezo a creer que lo mío con los formularios es una adicción xD

Después de meditarlo unos 3 minutos he llegado a la conclusión de que sólo hablo de formularios porque no tengo tiempo (y cuando lo tengo, no tengo ganas de ponerme al ordenador) para investigar a fondo el resto de scripts y códigos.. y cómo los formularios los gasto a diario.. pues eso xD

Al lío, hoy explico de forma resumida cómo crear un formulario del tipo ‘Recomienda esta web a un amigo‘.
El usuario tendrá que escribir su nombre, su email, el nombre del amigo al que quiere recomendar la página y el email de éste, también podrá escribirle un comentario si quiere. Cuando clique sobre el botón enviar, éste se enviará automáticamente a la dirección que haya indicado.

El html de nuestro formulario, sería el siguiente:

<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<p>Tu nombre:</p>
<p><input name="nombre1" type="text" id="nombre1" /></p>
<p>Tu e-mail:</p>
<p><input name="email1" type="text" id="email1" /></p>
<p>Nombre de tu amigo/a:</p>
<p><input name="nombre" type="text" id="nombre" /></p>
<p>E-mail de tu amigo/a:</p>
<p><input name="email" type="text" id="email" /></p>
<p>Comentarios:</p>
<p><textarea name="comentarios" cols="30" rows="6"></textarea></p>
<p><input type="reset" value="borrar" />
<input type="submit"  value="enviar"/></p>
</form>

Y usando la maravillosa función mail() mandamos los datos recogidos a la dirección de email que nos indican:

$msg= "Hola ".$_POST['nombre'] ."!";
$msg.= "\n". $_POST['nombre1']." (". $_POST['email1'] .") nos ha pedido que te invitemos a visitar nuestra web,";
$msg.= " y ha querido escribirte el siguiente comentario: \n".$_POST['comentarios'];
$msg.= "\nVisita www.dominio.com y descubre miles de recursos a los que puedes acceder.";

$email = $_POST['email'];

$subject = "Recomendacion enviada desde Dominio.com por: ".$_POST['nombre1'];
mail($email, $subject, $msg, "FROM: Dominio.com<info@dominio.com>\n");

Recuerda cambiar ‘dominio.com’ por el dominio de tu web!

Para los que no les haya quedado muy claro les dejo el ejemplo completo:

<?php if (!isset($_POST['email'])) { ?>

<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<p>Tu nombre:</p>
<p><input name="nombre1" type="text" id="nombre1" /></p>
<p>Tu e-mail:</p>
<p><input name="email1" type="text" id="email1" /></p>
<p>Nombre de tu amigo/a:</p>
<p><input name="nombre" type="text" id="nombre" /></p>
<p>E-mail de tu amigo/a:</p>
<p><input name="email" type="text" id="email" /></p>
<p>Comentarios:</p>
<p><textarea name="comentarios" cols="30" rows="6"></textarea></p>
<p><input type="reset" value="borrar" />
<input type="submit"  value="enviar"/></p>
</form>

<?php }else{

$msg= "Hola ".$_POST['nombre'] ."!";
$msg.= "\n". $_POST['nombre1']." (". $_POST['email1'] .") nos ha pedido que te invitemos a   visitar nuestra web,";
$msg.= " y ha querido escribirte el siguiente comentario: \n".$_POST['comentarios'];
$msg.= "\nVisita www.dominio.com y descubre miles de recursos a los que puedes acceder.";

$email = $_POST['email'];
$subject = "Recomendacion enviada desde Dominio.com por: ".$_POST['nombre1'];
mail($email, $subject, $msg, "FROM: Dominio.com <info@dominio.com >\n");

?>

<p>Mensaje enviado.</p>
<p>Su recomendaci&oacute;n se ha enviado a la siguiente direcci&oacute;n <strong><?php echo   $email; ?></strong> correctamente.</p>
<p>Gracias por confiar en Dominio.com</p>

<?}?>

Todo vuestro! Que disfrutéis del verano!! :D

  • 31 julio 2008
  • Programación
  • , ,

47 comments on “Php: Formulario ‘Recomienda a un amigo’”

  1. Gracias, es muy buena la ayuda, pero tengo una pregunta ¿todo el código se pega despues de BODY? ó ¿hay alguna parte que se pegue entre head y /head?

    Muchas gracias

  2. No corre =( soy nuevo en esto de PHP.

    ¿Cómo lo instalo?

    ¿Guardo todo el código como PHP y luego como lo mando a llamar?

    ¿Me puedes ayudar por favor?, te lo agradecería mucho

  3. Hola NNatali
    muchas gracias por tener un blog como el tuyo donde podemos acudir los que nos iniciamos en esto de la programación.
    A mí gustaría preguntarte si hay alguna manera de hacer el formulario de recomendar a un amigo sin php porque yo creo que en mi servidor no funciona. Te paso el código en el que estoy trabajando pero que no me va. Muchas gracias

    Recomienda este programa a un amigo

    Tu nombre

    Tu correo

    Correos destinatarios

    Mensaje

     

    1. Hola Pilar! Las gracias tengo q dároslas yo a vosotros q me visitáis ;)
      El código que me has puesto se ha cortado, si quieres puedes enviarmelo a mi correo para hecharle un vistazo, o dime que error te aparece e intento ayudar así.
      Un formulario sin php, como no sea con .asp no se me ocurre otra manera, pero tiene que ser con programación del lado del servidor (php, asp), si tu servidor no admite php dudo q puedas usar asp, ya que asp trabaja sobre servidores windows y lo más “normal” es encontrar servidores linux.
      Intenta averiguar si admite php preguntando a tu proveedor o viendo las características desde la web donde lo contratáste (ya sea gratis o de pago).
      Un saludo!

  4. Hola! muy buena explicación, quisiera saber como sería pero para que capture la url en la que se encuentra el visitante, dento de midominio.com
    Muchas gracias!!!

    1. Hola Alejandra!
      No termino de entender muy bien que es lo que necesitas ¿Quieres que en el formulario se envie tambien la url desde donde se ha mandado el formulario? ¿O la ip del visitante?
      Un saludo!!

  5. Tengo un formulario en esta web y al enviar un mail o rellenar el formulario y apretar enviar se abre el outlook y no se como solucionarlo. La web es un blog de google.
    Muchas gracias de antemano por tu tiempo.

    1. Hola Josep!
      ¿Me puedes dar la dirección del formulario? Así le hecho un vistazo.
      Lo más seguro que sea porque no tiene una programación php para que se envíe, sino que pongan directamente en el action del form el email al que debe enviarse.
      ¿Lo programastes tu? ¿O usastes algún plugin o algo similar?
      Un saludo!!

  6. hola me parecio excelente la explicacion de coomo enviar a un amigo.

    me gustaria que me ayuden a realizar un formulario dentro del body que me mande a llamar al action:”enviar.php” pero este formulario tiene que tener la opcion de adjuntar imagenes(jpg,png,giff)…yo lo he venido realizando y me he encontrado con dos form distintos y los quiero enlazar. el 1. es el form de datos y el 2. es el form de adjuntar archivo..

    todos estos datos o mejor dicho todo el form tiene que llegar a mi correo.osea : FORMULARIO QUE LLEGA AL CORREO CON ADJUNTOS.

    Y LO QUE TENGO ESTO:

    Estoy realizando un formulario donde al final el usuario que llene el form pueda ingresar 4 archivos adjuntos donode solo se permita archivos con ext: .jpg, .png, .gif. con una capacidad maxima de 2 Mb por adjunto tenga estas dos form con estas dos action_”. no he podido ligarlas bien para que me funcionen me podrian dar una manito con estos scripts?

    1. Este es formulario que solicita los datos. y el 2. es el formulario que solicita adjuntar los archivos. (Entonces les copio los HTML y los PHP correspondiente)

    1.————

    Nombres:

    Apellidos:

    Telefono:

    Celular:

    Correo:

    Escriba si es en Venta y/o Alquiler:

    Ciudad y municipio:

    Separe por comas Ciudad, municipio

    Tipo de Propiedad:

    Casa, Apartamento, Condominio, Terreno, Finca, Quinta, bodega, oficina, módulos.

    Dirección:

    Area de Terreno (si es venta):

    En Varas Cuadradas (Vrs2) o en Metros Cuadrados (Mts2)

    Precio:

    Caracteristicas de la propiedad:

    Descripcion completa de la propiedad, y si tienen servicios básicos
    (agua potable, luz electrica, telefono, cable, internet)

    Una vez recibido los datos, uno de nuestros asesores
    se pondrán en contacto con Usted.

    //——-
    CONEXION PHP de este primer formulario//—–

    //——- SEGUNDO FORMULARIO
    AHORA LES MUESTRO LA VERSION HTML PARA ADJUNTAR LOS ARCHIVOS LEUGO S UVERSION EN .PHP/—–

    Seleccionar archivo:

    //———-
    llamado .PHP del form del envio de imagenes. ////—–

    enviarlist.php
    <?

    //datos del arhivo

    $nombre_archivo = $HTTP_POST_FILES[‘archivo’][‘name’];
    $tipo_archivo = $HTTP_POST_FILES[‘archivo’][‘type’];
    $tamano_archivo = $HTTP_POST_FILES[‘archivo’][‘size’];

    //compruebo si la extension es correcta

    if (!((strpos($tipo_archivo, “gif”) || strpos($tipo_archivo, “jpeg”) || strpos ($tipo_archivo, “png”) ))) {

    echo “La extensión $tipo_archivo no es correcta.”;
    echo “Solo pueden subir archivos con extension …..”;

    }else{

    //compruebo si el tamaño es correcto

    if (!($tamano_archivo < 3145728)) {

    echo “El tamaño del archivo debe ser inferior a 3Mb (3072Kb).”;

    }else{

    if (move_uploaded_file($HTTP_POST_FILES[‘archivo’][‘tmp_name’], $nombre_archivo)){

    echo “El archivo subio correctamente”;

    }else{

    echo “Ocurrió algún error al subir el archivo. Intenta subirlo nuevamente”;

    }
    }
    }
    ?>

    ////———– lo que solicito es que me ayuden a ligar este dos form con a un solo FORMULARIO y a un solo. /////———–

      1. hola Natali,, sabes que viendo tu web,(siempre te visito por cierto), tengo que armar algo parecido a esto del comentario de “marcos”,,si me podrias echar una manito:
        marcos dice:
        15 abril, 2009 a las 1:00
        hola me parecio excelente la explicacion de coomo enviar a un amigo.
        me gustaria que me ayuden a realizar un formulario dentro del body que me mande a llamar al action:”enviar.php” pero este formulario tiene que tener la opcion de adjuntar imagenes(jpg,png,giff)…yo lo he venido realizando y me he encontrado con dos form distintos y los quiero enlazar. el 1. es el form de datos y el 2. es el form de adjuntar archivo..
        todos estos datos o mejor dicho todo el form tiene que llegar a mi correo.osea : FORMULARIO QUE LLEGA AL CORREO CON ADJUNTOS.
        Y LO QUE TENGO ESTO:
        Estoy realizando un formulario donde al final el usuario que llene el form pueda ingresar 4 archivos adjuntos donode solo se permita archivos con ext: .jpg, .png, .gif. con una capacidad maxima de 2 Mb por adjunto tenga estas dos form con estas dos action_”. no he podido ligarlas bien para que me funcionen me podrian dar una manito con estos scripts?
        1. Este es formulario que solicita los datos. y el 2. es el formulario que solicita adjuntar los archivos. (Entonces les copio los HTML y los PHP correspondiente)
        1.————
        Nombres:
        Apellidos:
        Telefono:
        Celular:
        Correo:
        Escriba si es en Venta y/o Alquiler:
        Ciudad y municipio:
        Separe por comas Ciudad, municipio
        Tipo de Propiedad:
        Casa, Apartamento, Condominio, Terreno, Finca, Quinta, bodega, oficina, módulos.
        Dirección:
        Area de Terreno (si es venta):
        En Varas Cuadradas (Vrs2) o en Metros Cuadrados (Mts2)
        Precio:
        Caracteristicas de la propiedad:
        Descripcion completa de la propiedad, y si tienen servicios básicos
        (agua potable, luz electrica, telefono, cable, internet)
        Una vez recibido los datos, uno de nuestros asesores
        se pondrán en contacto con Usted.
        //——-
        CONEXION PHP de este primer formulario//—–
        //——- SEGUNDO FORMULARIO
        AHORA LES MUESTRO LA VERSION HTML PARA ADJUNTAR LOS ARCHIVOS LEUGO S UVERSION EN .PHP/—–
        Seleccionar archivo:
        //———-
        llamado .PHP del form del envio de imagenes. ////—–
        enviarlist.php
        <?
        //datos del arhivo
        $nombre_archivo = $HTTP_POST_FILES[‘archivo’][‘name’];
        $tipo_archivo = $HTTP_POST_FILES[‘archivo’][‘type’];
        $tamano_archivo = $HTTP_POST_FILES[‘archivo’][‘size’];
        //compruebo si la extension es correcta
        if (!((strpos($tipo_archivo, “gif”) || strpos($tipo_archivo, “jpeg”) || strpos ($tipo_archivo, “png”) ))) {
        echo “La extensión $tipo_archivo no es correcta.”;
        echo “Solo pueden subir archivos con extension …..”;
        }else{
        //compruebo si el tamaño es correcto
        if (!($tamano_archivo
        ////———– lo que solicito es que me ayuden a ligar este dos form con a un solo FORMULARIO y a un solo. /////———–
        (no se si es que le falto algo al final,,es que el php me cuesta un poco,,si me ayudas te agradesco muchisimo,,saludos de argentina.)

  7. carnales gracias jejej soy diseñador y medio bruto para programar en php pero la necesidad jajja te hace aprender bueno muchas gracias fue un manual como para bruto jejej aunq seria mas bacan si enseñan como enviarlo validandolo bueno muchas gracias

  8. Saludos Nelly estoy en busca de un plugins para wordpress que sea para Recomendar amistades de las Redes Sociales Como Facebook, tweeter, messenger ect.. es algo parecido al folmulario de recomendar amigos no se si sabras de alguno? o alguien que vea este mensaje y me pueda ayudar cualquier cosa me pueden dejar un mensaje en mi blog.

    gracias..

  9. Hola Natali.
    Esta muy buena tu explicación me ha servido de mucho.
    En mi caso lo que hice fue, por un lado un .htm asi:

    Tu nombre:

    Tu e-mail:

    Nombre de tu amigo/a:

    E-mail de tu amigo/a:

    Comentarios:

    y el archivo sendreco.php que dentro del body es:

    Me sale un problema al clickear en ENVIAR que dice algo asi:
    Warning: mail() [function.mail]: SMTP server response: 451 See http://pobox.com/~djb/docs/smtplf.html. in D:\Hosting\5404718\html\principal\recomendar\sendreco.php on line 26
    Capas estan mal los codigos, pero di mil vueltas y no logro darme cuenta cual es el error. Te agradeceria mucho si me podes dar una ayuda. Saludos, desde ya muchisimas gracias!!!

  10. El HTML puede tener cualquier nombre, y para llamar al php, lo indicas en el atributo “action” dentro de la etiqueta FORM.
    Por ejemplo si tu php se llama enviarformulario.php
    action=”enviarformulario.php” si es que lo tenes en el mismo directorio donde tenes el HTML.
    Espero que halla sido de ayuda mi respuesta, Saludos!

  11. Holitas!!
    TiNZ el error que te devuelve es del servidor SMTP.. a primeras no sé por qué te aparece pero buscando en google sobre ese error leo que tienes que reemplazar los saltos de línea con “\n” por “\r\n”.. no sé si tendrá algo que ver, pero por probar.. xD

    xtian en la explicación de este post es todo un mismo archivo .php, por lo demás ya te lo explicó TiNZ :)

    Saludos!

  12. Si geracias natali ya me salio en un mismo archivo.
    Y como podria hacer para agregar otro campo mas para recomendar otro amigo y que le mesaje que le llega al correo vaya en una tabla con color, disuclpen un poco mi ignnorancia es que soy mas diseñador que programador.

  13. Hola de nuevo, antes que nada, te agradezco la respuesta natali.
    Ya he solucionado el problema anterior, pero ahora me surgio uno nuevo y dice esto:

    Warning: mail() [function.mail]: SMTP server response: 554 The message was rejected because it contains prohibited virus or spam content in D:\Hosting\5404718\html\principal\recomendar\sendreco.php on line 31

    Y luego abajo me dice lo de Mensaje enviado, etc.

    Reviso todo un monton de veces pero no encuentro cual seria el problema.

    Si alguien sabe de esto y me pueda dar una mano seria barbaro!

    Muchas Gracias!
    Saludos!

  14. Sí, me pasa lo mismo que a tí, según tengo entendido hay que activar la función mail()php en su alojador, lo que pasa que no lo encutro. Por favor alguien sabe cómo hacerlo en godaddy, tengo el plan unlimited y servidor en windows.

    Saludos.

  15. Excelente explicación y ejemplos.Natali, que tendriamos que añadirle a este formulario, si deseo que una variable capture la dirección URl exacta desde donde se envia la recomendación. Ejemplo: tendo un sitio con reflexiones una cada pagina, y deseo que a mi amigo le llegue la dirección de la reflexión que más me gusto. UN saludo desde Venezuela

  16. Saludos.

    Llevo varios dias tratando de hacer funcioar un formulario que esta en http://www.myspace.con/habanasi, su estructura es la siguiente:

    Tu nombre:

    Tu email:

    Nombre de tu amigo:

    Email de tu amigo:

    Leo mucho acerca del archivo php pero me temo que mi proyecto no podre realizarlo porque quizas myspace no lo admita en su pagina. Ciertamente no se como armar el archivo de referencia y donde ponerlo.?

    Ojala, usted disponga de tiempo para ayudarme.

    Agradecido.

  17. Hola Eduardo!

    Siento no poder ayudarte en este tema, pues no tengo ni idea de la forma de trabajar en myspace. De todas formas, si admite php es posible. Aunque tengo la impresión de que myspace trabajará con plugins, o habrán ya plantillas con formularios ya incluidos. Será cuestión de buscas un poquito.

    Saludos y espero des con la solución!

  18. Gracias por atender mi inquietud.

    Continuare buscando y encontrada la solucion la posteare aqui, en tu pagina.

    Atte.

    Eduardo Leon De La Hoz

  19. mira carlos esta buenisimo tu blog te felicito sigue dando clases para que jovenes se interesen mas en la programacion antes de interesarce en algo que no les ayude en la vida FELICITASIONES

  20. hola perdon princesa natali lo que pasa es que me confundi te dije carlos pero igual te felicito eres una mujer digna de seguir ejemplo bien por ti seras una excelente mujer felicitaciones

    Jeremy coca

  21. Hola
    esta muy bueno esto
    te felicito

    estoy tratando de ponerlo en la pagina
    pero no me anda
    cuando le doy send
    no encuentra nada
    no recibo ningun mail
    de confirmacion ( me lo mando yo para probar )
    me aparece mi pagina />
    y tira error

    como veras soy muy nuevo en esto
    pero bueno me estoy armando mi pagina por primera ves
    y la verdad esta informacion es perfecta

    muchas gracias

  22. Hola Nelly,
    Tengo una web en construcción, y le he añadido un formulario “recomendar mi web a un amigo”, con phpmailer para enviar los datos del formulario, lo he probado y no envía absolutamente nada, ya no se donde puede estar el error.
    En http://go-forklifts.com puedes encontrar el enlace que abre el formulario (../recomienda.php) y la página donde está el código php (../recomendar.php)
    En la misma web tienes una aplicación de Live Messenger donde puedes contactarme, o déjame aquí tus comentarios.
    Mil gracias, un saludo.

  23. hola amiga,me gustaria que me ayudes el formulario de la pagina q estoy creando no funciona me gustaria enviarte la pagina para q le des una mirada en que estoy fallando

  24. woow muuchas gracias, llevo intentandolo con otros tutoriales y no habia podido lograr resultados, pero este funcionó perfecto.. MUCHAS GRACIAS FUISTE ENVIADA DEL CIELO

  25. Hola nnataly intente instalar el formulario de contacto pero la verdad como recién estoy aprendiendo nose que hice mal.

    mw redirecciona a esta página http://therapie.cl/%3C?=$_SERVER%5B'PHP_SELF'%5D?%3E

    y me aparece este error
    Not Found

    The requested URL /< was not found on this server.

    Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

    Espero que puedas ayudarme.
    De antemano gracias

    1. Ya se que pasó necesitaba un plugin que se llama WP PHP widget para poder escribir los codigos y que me los reconociera.

      Muchas gracias por las indicaciones ahora me dunciona perfecto :)

  26. Estimada Nelly: gusto en conocerla, ud, me podria ayudar? por lo que veo si lo has hecho y ayudado a otros diseñadores.
    Yo soy diseñador grafico y realice un sitio web, no se de codigos html ni de php. El formulario no funciona: desde sitio web, no entra ningun correo y desde el squirremail enviar un correo sale “error 451 problema local”
    he revisado el enviar.php y el html de la pagina donde va inserto y comparandolo con otros formularios que si funcionan, no se vee diferencias.. he corregido varias veces el correo destino y al llamar el sitio y hacer funcionar la pagina de contacto (formulario) no funciona… saludos te envio el enviar php del formulario:
    Resp :
    FORMULARIO DE CONTACTO :: ” . chr(13). chr(10);
    $mensaje=$mensaje . “—————————————” . chr(13). chr(13). chr(10);
    $mensaje=$mensaje . “Nombre : ” . $nombre . chr(13). chr(10);
    $mensaje=$mensaje . “E-mail : ” . $email . chr(13). chr(10);
    $mensaje=$mensaje . “Teléfono : ” . $fono . chr(13). chr(10);
    $mensaje=$mensaje . “Comentarios : ” . $texto . chr(13). chr(10);

    $resultado = mail (“info@genet.cl” , “Contacto por:” . $nombre, $mensaje, $nombre);
    if ($resultado);
    $resultado = mail (“stoprentacar.cl” , “Contacto por:” . $nombre, $mensaje, $nombre);
    if ($resultado);

    echo “”;
    echo “”;
    echo “”;
    echo “”;
    echo “”;
    echo “”;
    echo “”;
    echo “Hemos recibido tu correo, nos pondremos en contacto lo antes posible. Gracias $nombre”;
    echo “”;
    echo “”;
    echo “”;
    echo “”;
    echo “”;
    echo “”;
    echo “”;

    } else {
    echo “”;
    echo “”;
    echo “”;
    echo “”;
    echo “”;
    echo “”;
    echo “”;
    echo “”;
    echo “Inténtelo más tarde “;
    echo “”;
    echo “”;
    echo “”;
    echo “”;
    echo “”;
    echo “”;
    echo “”;
    }
    ?>

    Noi tengo mucho dinero pa pagarte pero si me resulta te pagaria algo. Gracias.

  27. segune el acticulo publicado cuando lo pones en el body me da un error de sintasis por ejemplo el error siempre lo da en la linea en donde se encuentra el concluir del body que puede ser esto ?? garcias

  28. Hola, estoy buscando un código para “enviar a un amigo” que incluya el link de la página que se está recomendando y que a la vez me envíe a mi una copia a mi. Es para insertar en WordPress.
    Muchas gracias

  29. Natali, MUUCHAAAASSSS GRACIAS por tantos formularios buenos. Estoy utilizando tu formulario RECOMIENDA A UN AMIGO, pero quisiera que enviara BCC a mi email, como puedo implementarlo? que debo agregar y donde.

    MUCHAS GACIASS Por toda tu ayuda

    Saludos
    kathy

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *