Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Insertar imágenes mediante Formulario

Estas en el tema de Insertar imágenes mediante Formulario en el foro de PHP en Foros del Web. Buenas Tengo un formulario en HTML, que me envía los datos a mi correo electrónico, para procesar el envío uso código en PHP (adjunto el ...
  #1 (permalink)  
Antiguo 01/01/2014, 13:04
 
Fecha de Ingreso: junio-2008
Mensajes: 25
Antigüedad: 16 años, 5 meses
Puntos: 0
Insertar imágenes mediante Formulario

Buenas

Tengo un formulario en HTML, que me envía los datos a mi correo electrónico, para procesar el envío uso código en PHP (adjunto el HTML y el PHP)

Lo que quiero hacer es insertar la opción de adjuntar una imagen y que esta me llegue directamente al propio email que recibo cuando se rellena el formulario y le damos a enviar.

CODIGO HTML:
Código HTML:
Ver original
  1. <form method="post" name="contact" action="mailform.php">
  2.               <table width="396" border="0">
  3.                                   <tr>
  4.                                     <td>
  5.                                       <label for="author">Nombre:</label>
  6.                                     </td>
  7.                                     <td colspan="2"><input name="nombre" type="text" id="nombre" value="" size="30" /></td>
  8.                                  </tr>
  9.                                   <tr>
  10.                                     <td>
  11.                                       <label for="author">Dirección:</label>
  12.                                     </td>
  13.                                     <td colspan="2"><input name="direccion" type="text" id="direccion" value="" size="40" /></td>
  14.                                   </tr>
  15.                                   <tr>
  16.                                     <td>
  17.                                     <label for="author2">Población:</label>
  18.                                     </td>
  19.                                     <td colspan="2"><input name="poblacion" type="text" id="poblacion" value="" size="30" /></td>
  20.                                    </tr>
  21.                                   <tr>
  22.                                     <td>
  23.                                         <label for="author">Email:</label>
  24.                                     </td>
  25.                                     <td colspan="2"><input name="email" type="text" id="email" value="" size="30" /></td>
  26.                                   <tr>
  27.                                     <td><label for="author3">Teléfono:</label>
  28.                                     </td>
  29.                                     <td colspan="2"><input name="telefono" type="text" id="telefono" value="" size="15" /></td>
  30.                 </tr>
  31. <tr>
  32.                                       <td><label for="author4">Asunto:</label>
  33.                                     </td>
  34.                                       <td colspan="2"><input name="asunto" type="text" id="asunto" value="" size="30" /></td>
  35.                 </tr>
  36.                                   <tr>
  37.                                     <td colspan="3">
  38.                                     <label for="text2">Mensaje:</label></td>
  39.                                   </tr>
  40.               <tr>
  41.                 <td colspan="3">
  42.                 <textarea id="mensaje" name="mensaje" rows="9" cols="45" class="required"></textarea>
  43.                 </td>
  44.               </tr>
  45.                                 <tr>
  46.                                       <td colspan="3">&nbsp;</td>
  47.                                 </tr>
  48.              
  49.               <tr>
  50.                 <td width="80">
  51.                     <input type="submit" value="Enviar" id="enviar" name="enviar" class="submit_btn float_l" /></td>
  52.                 <td width="160">&nbsp;</td>
  53.                 <td width="161" align="left"><input type="reset" value="Borrar" id="reset" name="reset" class="submit_btn float_r" /></td>
  54.               </tr>
  55.               </table>
  56.             </form>

CODIGO PHP:

Código PHP:
Ver original
  1. $date = date("m/d/Y H:i:s");
  2.  
  3. if ($_SERVER['REMOTE_ADDR'] == "")
  4.     $ip = "no ip";
  5. else
  6.     $ip = getHostByAddr($_SERVER['REMOTE_ADDR']);
  7.  
  8.  
  9. if ($_POST['enviar'] != ""){  
  10.     // Mail al administrador...
  11.     $mail = new PHPMailer();
  12.     $mail->From     = $adminaddress;
  13.     $mail->FromName = $sitename;
  14.     $mail->AddAddress($adminaddress);
  15.     $mail->AddReplyTo($adminaddress);
  16.     $mail->IsHTML(false);                               // send as HTML
  17.     $mail->Subject  =  "Me gustaria tener informacion sobre: ".$_POST['asunto']." ";
  18.     $mail->Body  =  "Enviado desde la web:\n
  19. ------------------------------ 
  20. Nombre y Apellidos: ".$_POST['nombre']."
  21. Direccion: ".$_POST['direccion']."
  22. Poblacion: ".$_POST['poblacion']."
  23. E-Mail: ".$_POST['email']."
  24. Telefono: ".$_POST['telefono']."
  25. Asunto: ".$_POST['asunto']."
  26. Mensaje: ".$_POST['mensaje']."
  27. Enviado: ".$date;"
El código sigue con más opciones...

Muchas gracias por la ayuda

Última edición por pzin; 04/01/2014 a las 15:59 Razón: formato código
  #2 (permalink)  
Antiguo 04/01/2014, 13:36
Avatar de jordirmz  
Fecha de Ingreso: enero-2013
Ubicación: Catalunya
Mensajes: 14
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Insertar imágenes mediante Formulario

Hola!

La librería PHPMailer tiene la opción de enviar un archivo adjunto de la siguiente manera (lo pones a continuación):

Código PHP:
Ver original
  1. $nombre = $_FILES['archivo']['name'];
  2. $nombre_temp = $_FILES['archivo']['tmp_name'];
  3.  
  4. $mail->AddAttachment($nombre_temp, $nombre);

Sólo tienes que poner el input type="file" con el nombre "archivo".

¡Espero que te sirva!

Saludos.
  #3 (permalink)  
Antiguo 04/01/2014, 13:40
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: Insertar imágenes mediante Formulario

Cita:
Iniciado por jordirmz Ver Mensaje
Hola!

La librería PHPMailer tiene la opción de enviar un archivo adjunto de la siguiente manera (lo pones a continuación):

Código PHP:
Ver original
  1. $nombre = $_FILES['archivo']['name'];
  2. $nombre_temp = $_FILES['archivo']['tmp_name'];
  3.  
  4. $mail->AddAttachment($nombre_temp, $nombre);

Sólo tienes que poner el input type="file" con el nombre "archivo".

¡Espero que te sirva!

Saludos.
Y un enctype="multipart/form-data" al formulario para que funcione correctamente

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #4 (permalink)  
Antiguo 06/01/2014, 16:30
 
Fecha de Ingreso: junio-2008
Mensajes: 25
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Insertar imágenes mediante Formulario

Cita:
Iniciado por jordirmz Ver Mensaje
Hola!

La librería PHPMailer tiene la opción de enviar un archivo adjunto de la siguiente manera (lo pones a continuación):

Código PHP:
Ver original
  1. $nombre = $_FILES['archivo']['name'];
  2. $nombre_temp = $_FILES['archivo']['tmp_name'];
  3.  
  4. $mail->AddAttachment($nombre_temp, $nombre);

Sólo tienes que poner el input type="file" con el nombre "archivo".

¡Espero que te sirva!

Saludos.

Hola, muchas gracias pero no me funciona!
He colocado el código en mi php por favor, dígame si esta correcto:


$date = date("m/d/Y H:i:s");

if ($_SERVER['REMOTE_ADDR'] == "")
$ip = "no ip";
else
$ip = getHostByAddr($_SERVER['REMOTE_ADDR']);


if ($_POST['enviar'] != ""){
// Mail al administrador...
$mail = new PHPMailer();
$mail->From = $adminaddress;
$mail->FromName = $sitename;
$mail->AddAddress($adminaddress);
$mail->AddReplyTo($adminaddress);
$mail->IsHTML(false); // send as HTML
$mail->Subject = "Me gustaria tener informacion sobre: ".$_POST['asunto']." ";
$mail->Body = "Enviado desde la web:\n


------------------------------
Nombre y Apellidos: ".$_POST['nombre']."
Direccion: ".$_POST['direccion']."
Poblacion: ".$_POST['poblacion']."
E-Mail: ".$_POST['email']."
Telefono: ".$_POST['telefono']."
Asunto: ".$_POST['asunto']."
Mensaje: ".$_POST['mensaje']."
Enviado: ".$date;"

------------------------------\n

Otros datos del usuario :
------------------------------
Navegador: ".$_SERVER['HTTP_USER_AGENT']."
Hostname: ".$ip."
IP address: ".$_SERVER['REMOTE_ADDR']."
Fecha/Hora: ".$date;
$nombre = $_FILES['archivo']['name'];
$nombre_temp = $_FILES['archivo']['tmp_name'];
$mail->AddAttachment($nombre_temp, $nombre);
$mail->Send();


Y en el formulario:
</tr>
<tr>
<td colspan="3"><input type="file" name="archivo"/></td>
</tr>

<tr>

Por favor, decirme donde se falla ya que no me envía la imagen
gracias
  #5 (permalink)  
Antiguo 07/01/2014, 03:32
Avatar de jordirmz  
Fecha de Ingreso: enero-2013
Ubicación: Catalunya
Mensajes: 14
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Insertar imágenes mediante Formulario

¿Has colocado
Código HTML:
Ver original
  1. enctype="multipart/form-data"
dentro de la etiqueta <form>?

HTML tiene dos maneras de codificar: con
Código HTML:
Ver original
  1. application/x-www-form-urlencoded
que es la que viene por defecto y que no acepta ficheros y
Código HTML:
Ver original
  1. multipart/form-data
una codificación un poco más complicada que sí permite ficheros.

Es necesario poner
Código HTML:
Ver original
  1. enctype="multipart/form-data"
para que la subida funcione como ya dijo jonni09lo.

Saludos.
  #6 (permalink)  
Antiguo 13/01/2014, 17:08
 
Fecha de Ingreso: junio-2008
Mensajes: 25
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Insertar imágenes mediante Formulario

Esto ya funciona correctamente...!lo que me gustaría es que aparezca un gif dando vueltas mientras se sube la imagen ya que sino parece como que no está haciendo nada...¿Cómo lo puedo hacer?

Espero vuestra respuesta, gracias
  #7 (permalink)  
Antiguo 13/01/2014, 17:39
 
Fecha de Ingreso: junio-2008
Mensajes: 25
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Insertar imágenes mediante Formulario

Cita:
Iniciado por jordirmz Ver Mensaje
¿Has colocado
Código HTML:
Ver original
  1. enctype="multipart/form-data"
dentro de la etiqueta <form>?

HTML tiene dos maneras de codificar: con
Código HTML:
Ver original
  1. application/x-www-form-urlencoded
que es la que viene por defecto y que no acepta ficheros y
Código HTML:
Ver original
  1. multipart/form-data
una codificación un poco más complicada que sí permite ficheros.

Es necesario poner
Código HTML:
Ver original
  1. enctype="multipart/form-data"
para que la subida funcione como ya dijo jonni09lo.

Saludos.
Esto ya funciona correctamente...!lo que me gustaría es que aparezca un gif dando vueltas mientras se sube la imagen ya que sino parece como que no está haciendo nada...¿Cómo lo puedo hacer?

Espero vuestra respuesta, gracias
  #8 (permalink)  
Antiguo 14/01/2014, 08:55
Avatar de jordirmz  
Fecha de Ingreso: enero-2013
Ubicación: Catalunya
Mensajes: 14
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Insertar imágenes mediante Formulario

Puedes hacerlo a través de javascript:

Código HTML:
Ver original
  1. <script type="text/javascript" language="javascript">
  2. function submitform()
  3. {
  4.     document.getElementById('reset').disabled=true;
  5.     document.getElementById('enviar').disabled=true;    /*Desactiva botones de enviar y resetear*/
  6.     document.getElementById('loading').style.visibility='visible'; /*Muestra el gif*/
  7.     document.getElementById("reset").className = "submit_btn float_l_desactivado";
  8.     document.getElementById("enviar").className = "submit_btn float_l_desactivado"; /*Estas dos líneas están por si quieres modificar la clase de los inputs al desactivarlos (Realmente no son necesarias)*/
  9. }
  10. <style type="text/css">
  11. #loading
  12. {
  13. visibility:hidden;
  14. }
  15.  
  16. <form method="post" name="contact" onsubmit="submitform()"action="mailform.php" enctype="multipart/form-data">
  17.               <table width="396" border="0">
  18.                                   <tr>
  19.                                     <td>
  20.                                       <label for="author">Nombre:</label>
  21.                                     </td>
  22.                                     <td colspan="2"><input name="nombre" type="text" id="nombre" value="" size="30" /></td>
  23.                                  </tr>
  24.                                   <tr>
  25.                                     <td>
  26.                                       <label for="author">Dirección:</label>
  27.                                     </td>
  28.                                     <td colspan="2"><input name="direccion" type="text" id="direccion" value="" size="40" /></td>
  29.                                   </tr>
  30.                                   <tr>
  31.                                     <td>
  32.                                     <label for="author2">Población:</label>
  33.                                     </td>
  34.                                     <td colspan="2"><input name="poblacion" type="text" id="poblacion" value="" size="30" /></td>
  35.                                    </tr>
  36.                                   <tr>
  37.                                     <td>
  38.                                         <label for="author">Email:</label>
  39.                                     </td>
  40.                                     <td colspan="2"><input name="email" type="text" id="email" value="" size="30" /></td>
  41.                                   <tr>
  42.                                     <td><label for="author3">Teléfono:</label>
  43.                                     </td>
  44.                                     <td colspan="2"><input name="telefono" type="text" id="telefono" value="" size="15" /></td>
  45.                 </tr>
  46. <tr>
  47.                                       <td><label for="author4">Asunto:</label>
  48.                                     </td>
  49.                                       <td colspan="2"><input name="asunto" type="text" id="asunto" value="" size="30" /></td>
  50.                 </tr>
  51.                                   <tr>
  52.                                     <td colspan="3">
  53.                                     <label for="text2">Mensaje:</label></td>
  54.                                   </tr>
  55.               <tr>
  56.                 <td colspan="3">
  57.                 <textarea id="mensaje" name="mensaje" rows="9" cols="45" class="required"></textarea>
  58.                 </td>
  59.               </tr>
  60.                                 <tr>
  61.                                       <td colspan="3">&nbsp;</td>
  62.                                 </tr>
  63.              
  64.               <tr>
  65.                 <td width="80">
  66.                     <input type="submit" value="Enviar" id="enviar" name="enviar" class="submit_btn float_l" /></td>
  67.                 <td width="160"><img src="[Ruta de tu gif]" alt="Cargando..." width="32px" height="32px" id="loading" />&nbsp;</td>
  68.                 <td width="161" align="left"><input type="reset" value="Borrar" id="reset" name="reset" class="submit_btn float_r" /></td>
  69.               </tr>
  70.               </table>
  71.             </form>

No lo he probado, supongo que te funcionará.
Ten en cuenta el onsubmit, el código javascript y la imagen.


Saludos

Etiquetas: formulario, html, mediante
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 22:39.