Foros del Web » Programando para Internet » PHP »

Necesito ayuda !!

Estas en el tema de Necesito ayuda !! en el foro de PHP en Foros del Web. Necesito crear un formulario con un campo para subir archivos files , el formulario de contactO basiCo si se hacerlo pero el campo file no ...
  #1 (permalink)  
Antiguo 12/06/2010, 08:55
Avatar de mateo777  
Fecha de Ingreso: octubre-2009
Mensajes: 56
Antigüedad: 14 años, 6 meses
Puntos: 2
Necesito ayuda !!

Necesito crear un formulario con un campo para subir archivos files , el formulario de contactO basiCo si se hacerlo pero el campo file no se como ponerselo y me refiero a la parte php la html si que se hacerlo con el dreamweaver es muy sencillo , voy a dejar la hoja php de mi formulario haber si alguno sabria añadirle el file que no tengo ni idea
Código PHP:
Ver original
  1. <?php
  2. if($_POST['enviar']) {
  3.  
  4. $de = $_POST["email"];
  5. $asunto = $_POST["asunto"];
  6. $nombre = $_POST["nombre"];
  7. $msj = "El siguiente es un email enviado por <strong>$nombre</strong> desde el formulario de contacto de NOMBREDELDOMINIO.COM<br />Si este mensaje es spam, contiene comentarios abusivos o que considere
  8. ofensivos<br />por favor contacte con La Administración del Sitio en esta dirección:<br /><br />[email protected]<br /><br />Este es el mensaje enviado:<br />~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />".$_POST["mensaje"];
  9. $sheader="From:".$de."\nReply-To:".$de."\n";
  10. $sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
  11. $sheader=$sheader."Mime-Version: 1.0\n";
  12. $sheader=$sheader."Content-Type: text/html";
  13. mail($para,$asunto,$msj,$sheader);
  14. }
  15. ?>
POR FAVOR SI ALGUIEN COMO AÑADIRLE PARA QUE PUEDA SUBIR ARCHIVOS/IMAGENES/FOTOS ESTARIA MUY AGRADECIDO COMPAÑEROS , UN SALUDO.

Última edición por mateo777; 12/06/2010 a las 16:16
  #2 (permalink)  
Antiguo 12/06/2010, 09:41
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Necesito ayuda !!

En internet hay mucho material, mira esta busqueda http://www.google.com/search?q=imagenes+mail+php
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 12/06/2010, 16:11
Avatar de mateo777  
Fecha de Ingreso: octubre-2009
Mensajes: 56
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Necesito ayuda !!

os voy a dejar mi formulario por si alguien me lo puede corregir:

- El formulario es de contacto , un campo para el nombre , para el email , el asunto y el mensaje , igual que un email , pero para poder adjuntarle el archivo no se hacerlo todavia , he conseguido hacer uno pero tiene fallos es el siguiente .

Código HTML:
Ver original
  1. <form action="formulario-imagen.php" method="post" enctype="multipart/form-data" name="form1">
  2.      <INPUT type=hidden name=MAX_FILE_SIZE  VALUE=2048>
  3.      <table width="387" border="1" bordercolor="#ECE9D8">
  4.       <tr>
  5.         <td width="103"><strong><span class="Estilo1">NOMBRE</span></strong></td>
  6.         <td width="268"><input name="nombre" type="text" id="nombre"></td>
  7.       </tr>
  8.       <tr>
  9.         <td class="Estilo1"><strong>ASUNTO</strong></td>
  10.         <td><input name="asunto" type="text" id="asunto"></td>
  11.       </tr>
  12.       <tr>
  13.         <td class="Estilo1"><strong>EMAIL</strong></td>
  14.         <td><input name="email" type="text" id="email"></td>
  15.       </tr>
  16.       <tr>
  17.         <td class="Estilo1"><strong>MENSAJE</strong></td>
  18.         <td><textarea name="mensaje" cols="40" id="mensaje"></textarea></td>
  19.       </tr>
  20.       <tr>
  21.         <td class="Estilo1"><strong>FOTO</strong></td>
  22.         <td align="left"> <div align="left">
  23.             <INPUT type=hidden name=MAX_FILE_SIZE  VALUE=2048>
  24.             <INPUT type=file name="nom_del_archivo">
  25. &nbsp;       </div></td>
  26.       </tr>
  27.       <tr>
  28.         <td>&nbsp;</td>
  29.         <td><input name="enviar" type="submit" id="enviar" value="Enviar"></td>
  30.       </tr>
  31.     </table>
  32.   </form>



-Ahora la hoja php:

Código PHP:
Ver original
  1. <?php
  2. if($_POST['enviar']) {
  3.  
  4. $de = $_POST["email"];
  5. $asunto = $_POST["asunto"];
  6. $nombre = $_POST["nombre"];
  7.  
  8. $msj = "El siguiente es un email enviado por <strong>$nombre</strong> desde el formulario de contacto de midominio<br />Si este mensaje es spam<br />por favor contacte con La Administración del Sitio en esta dirección:<br /><br />[email protected]<br /><br />Este es el mensaje enviado:<br />~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />".$_POST["mensaje"];
  9. $sheader="From:".$de."\nReply-To:".$de."\n";
  10. $sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
  11. $sheader=$sheader."Mime-Version: 1.0\n";
  12. $sheader=$sheader."Content-Type: text/html";
  13. mail($para,$asunto,$msj,$sheader);
  14. }
  15. ?>

-Buscando por internet de esto es lo que he conseguido hasta ahora , el formulario funciona pero no manda el archivo , la verdad que no se que variables tengo que usar ni como , y tampoco se como va muy bien el directorio para archivos temporales que hay que alojar en el servdor , si alguien sabria volver a escribir este codigo pero añadiendole lo que le falta para que los archivos llegen como adjuntos en el email , y explique si hay que poner una carpeta para archivos temporales en el servidor y como hay que hacerlo , se que hay que hacerla y darle permisos de escritura 777 pero hasta ahi no se mas y no lo he puesto en practica , bueno aqui os dejo esto que es el problemilla que tengo que me esta dando bastantes dolores de cabeza ...

Última edición por mateo777; 12/06/2010 a las 16:16
  #4 (permalink)  
Antiguo 12/06/2010, 16:15
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Necesito ayuda !!

¿Lo que quieres es adjuntar un archivo? Si es así, aquí tienes un par de tutoriales :

http://www.programacionweb.net/foros/mensaje/?num=1344
http://www.original-design.es/tutori...juntos_php.php

Y dentro del mismo foro, usando google : link
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 13/06/2010, 09:10
Avatar de mateo777  
Fecha de Ingreso: octubre-2009
Mensajes: 56
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Necesito ayuda !!

Uno de los enlaces que me pones contiene un codigo en html y otro en php y me funciono perfectamente , no me he mareado la cabeza en retocarlo y adaptar el mio simplemente he copiado y ejecutado tal y como viene y bingo!! me lo ha enviado todo el texto y los adjuntos , ahora le voy a poner para que se pueda mandar mas de un adjunto y los campos de nombre asunto y mail los voy adaptar a mi formulario pero eso ya es html y php basico , de todos modos si se os ocurre algo que deba saber no dudeis en escribirlo , voy a dejar la url del formulario que he probado por que me ha funcionado perfectamente por si alguien mas le hiciese falta pues ya sabra que esta probado y funciona , muchas gracias . un saludo .

http://www.original-design.es/tutoriales/email_con_archivos_adjuntos_php.php

el formulario que aparece en esta pagina funciona perfectamente solo teneis que copiar el texto html y el php y listo .
  #6 (permalink)  
Antiguo 13/06/2010, 09:30
Avatar de mateo777  
Fecha de Ingreso: octubre-2009
Mensajes: 56
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Necesito ayuda !!

Bueno pensandolo mejor como aportacion mejor dejo yo mismo el texto html y el php , por si alguien le hace falta.

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  2. "http://www.w3.org/TR/html4/loose.dtd">
  3. <title>Documento sin t&iacute;tulo</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  5. </head>
  6.  
  7. <form name='formulario' id='formulario' method='post' action='enviar.php' target='_self' enctype="multipart/form-data">
  8. <p>Nombre <input type='text' name='Nombre' id='Nombre'></p>
  9. <p>E-mail
  10. <input type='text' name='email' id='email'>
  11. </p>
  12. <p>Asunto
  13. <input type='text' name='asunto' id='asunto' />
  14. </p>
  15. <p>Mensaje
  16. <textarea name="mensaje" cols="50" rows="10" id="mensaje"></textarea>
  17. </p>
  18. <p>Adjuntar archivo: <input type='file' name='archivo1' id='archivo1'></p>
  19. <p>
  20. <input type='submit' value='Enviar'>
  21. </p>
  22. </form>
  23. </body>
  24. </html>

Ahora la hoja accion llamada en este caso enviar.php

Código PHP:
Ver original
  1. <?php
  2. function form_mail($sPara, $sAsunto, $sTexto, $sDe)
  3. {
  4. $bHayFicheros = 0;
  5. $sCabeceraTexto = "";
  6. $sAdjuntos = "";
  7.  
  8. if ($sDe)$sCabeceras = "From:".$sDe."\n";
  9. else $sCabeceras = "";
  10. $sCabeceras .= "MIME-version: 1.0\n";
  11. foreach ($_POST as $sNombre => $sValor)
  12. $sTexto = $sTexto."\n".$sNombre." = ".$sValor;
  13.  
  14. foreach ($_FILES as $vAdjunto)
  15. {
  16. if ($bHayFicheros == 0)
  17. {
  18. $bHayFicheros = 1;
  19. $sCabeceras .= "Content-type: multipart/mixed;";
  20. $sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n";
  21.  
  22. $sCabeceraTexto = "----_Separador-de-mensajes_--\n";
  23. $sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
  24. $sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n";
  25.  
  26. $sTexto = $sCabeceraTexto.$sTexto;
  27. }
  28. if ($vAdjunto["size"] > 0)
  29. {
  30. $sAdjuntos .= "\n\n----_Separador-de-mensajes_--\n";
  31. $sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";;
  32. $sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
  33. $sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";
  34.  
  35. $oFichero = fopen($vAdjunto["tmp_name"], 'r');
  36. $sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
  37. $sAdjuntos .= chunk_split(base64_encode($sContenido));
  38. fclose($oFichero);
  39. }
  40. }
  41.  
  42. if ($bHayFicheros)
  43. $sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n";
  44. return(mail($sPara, $sAsunto, $sTexto, $sCabeceras));
  45. }
  46.  
  47. //cambiar aqui el email -- escribir aqui el email de destino
  48. if (form_mail("[email protected]", $_POST[asunto],
  49. "Los datos introducidos en el formulario son:\n\n", $_POST[email]))
  50. echo "Su formulario ha sido enviado con exito";
  51. ?>


Y aqui un completisimo formulario de contacto al que se le puede poner un adjuto o los que se necesiten.

Nota: no debeis olvidar que teneis que hacer una carpeta llamada tmp_name en el sevidor y darle orden de escritura 777 por que el archivo que subais primero pasa al servidor a esa carpeta para archivos temporales y de ahi la envia en el mail a vuestro correo y tambien no debeis olvidar ponerle el email vuestro por qu si no no sabra donde enviarlo y dara error , bueno por mi parte duda resuelta y aqui dejo este hilo para quien venga detras mia y lo necesite . saludos.

Última edición por mateo777; 09/04/2011 a las 11:42

Etiquetas: Ninguno
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 04:20.