Foros del Web » Programando para Internet » PHP »

Enviar imagen en formulario web

Estas en el tema de Enviar imagen en formulario web en el foro de PHP en Foros del Web. Buenos días a todos, resulta que tengo un servicio de registro para usuarios en mi web, muy simple porque los tengo que activar yo mismo, ...
  #1 (permalink)  
Antiguo 16/10/2011, 05:54
laventanadewindows
Invitado
 
Mensajes: n/a
Puntos:
Enviar imagen en formulario web

Buenos días a todos,
resulta que tengo un servicio de registro para usuarios en mi web, muy simple porque los tengo que activar yo mismo, pero funcional, y quería que en el formulario de registro también me pudiesen mandar su foto, avatar o como quieran llamarlo.
Lo agregue de está forma al formulario.
[PHP]<input type="file" id="avatar" name="avatar" />[/HTML]

Y luego probé a mandarlo al correo, manda absolutamente todos los datos del formularios: nombre, email,. contraseña etc...
Pero la imagen la manda con su nombre es decir, cuando me llega al correo me sale como se llama la imagen. Por ejemplo:
juanito.png

Pero no llega adjuntada que es lo que yo quiero.

Utilizé este código HTML:

Código HTML:
<form id="form1" name="form1" method="post" action="http://olawebs.sytes.net/PHP/procesar.php">
<div id="datoscuenta" name="datoscuenta">
Nombre: <span style="color:red;">*</span>
<input name="nombre" type="text" id="nombre" /><br /><br />
Email: <span style="color:red;">*</span>
<input name="email" type="text" id="email" /><br /><br />
Contraseña: <span style="color:red;">*</span>
<input name="contraseña" type="password" id="contraseña" /><br /><br />
Sexo: <span style="color:red;">*</span>
<select name="sexo" id="sexo">
<option value="Masculino">Masculino</option>
<option value="Femenino">Femenino</option>
</select><br /><br />
Cumpleaños: <span style="color:red;">*</span>
<select name="dianacimiento" id="dianacimiento">
<option value="-1">Día:</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option></select> 

<select name="mesnacimiento" id="mesnacimiento"><option value="-1">Mes:</option><option value="1">Enero</option><option value="2">Febrero</option><option value="3">Marzo</option><option value="4">Abril</option><option value="5">Mayo</option><option value="6">Junio</option><option value="7">Julio</option><option value="8">Agosto</option><option value="9">Septiembre</option><option value="10">Octubre</option><option value="11">Noviembre</option><option value="12">Diciembre</option></select> 

<select name="añonacimiento" id="añonacimiento"><option value="-1">Año:</option><option value="2011">2011</option><option value="2010">2010</option><option value="2009">2009</option><option value="2008">2008</option><option value="2007">2007</option><option value="2006">2006</option><option value="2005">2005</option><option value="2004">2004</option><option value="2003">2003</option><option value="2002">2002</option><option value="2001">2001</option><option value="2000">2000</option><option value="1999">1999</option><option value="1998">1998</option><option value="1997">1997</option><option value="1996">1996</option><option value="1995">1995</option><option value="1994">1994</option><option value="1993">1993</option><option value="1992">1992</option><option value="1991">1991</option><option value="1990">1990</option><option value="1989">1989</option><option value="1988">1988</option><option value="1987">1987</option><option value="1986">1986</option><option value="1985">1985</option><option value="1984">1984</option><option value="1983">1983</option><option value="1982">1982</option><option value="1981">1981</option><option value="1980">1980</option><option value="1979">1979</option><option value="1978">1978</option><option value="1977">1977</option><option value="1976">1976</option><option value="1975">1975</option><option value="1974">1974</option><option value="1973">1973</option><option value="1972">1972</option><option value="1971">1971</option><option value="1970">1970</option><option value="1969">1969</option><option value="1968">1968</option><option value="1967">1967</option><option value="1966">1966</option><option value="1965">1965</option><option value="1964">1964</option><option value="1963">1963</option><option value="1962">1962</option><option value="1961">1961</option><option value="1960">1960</option><option value="1959">1959</option><option value="1958">1958</option><option value="1957">1957</option><option value="1956">1956</option><option value="1955">1955</option><option value="1954">1954</option><option value="1953">1953</option><option value="1952">1952</option><option value="1951">1951</option><option value="1950">1950</option><option value="1949">1949</option><option value="1948">1948</option><option value="1947">1947</option><option value="1946">1946</option><option value="1945">1945</option><option value="1944">1944</option><option value="1943">1943</option><option value="1942">1942</option><option value="1941">1941</option><option value="1940">1940</option><option value="1939">1939</option><option value="1938">1938</option><option value="1937">1937</option><option value="1936">1936</option><option value="1935">1935</option><option value="1934">1934</option><option value="1933">1933</option><option value="1932">1932</option><option value="1931">1931</option><option value="1930">1930</option><option value="1929">1929</option><option value="1928">1928</option><option value="1927">1927</option><option value="1926">1926</option><option value="1925">1925</option><option value="1924">1924</option><option value="1923">1923</option><option value="1922">1922</option><option value="1921">1921</option><option value="1920">1920</option><option value="1919">1919</option><option value="1918">1918</option><option value="1917">1917</option><option value="1916">1916</option><option value="1915">1915</option><option value="1914">1914</option><option value="1913">1913</option><option value="1912">1912</option><option value="1911">1911</option><option value="1910">1910</option><option value="1909">1909</option><option value="1908">1908</option><option value="1907">1907</option><option value="1906">1906</option><option value="1905">1905</option></select>
Avatar: <span style="color:red;">*</span>
<input type="file" id="avatar" name="avatar" /><br />
<input type="submit" value="Enviar" />
</div>
</form> 
Y este código PHP:

Código PHP:
<?php 
// INGRESE EL EMAIL DONDE RECIBIRÁ LOS DATOS DEL FOMULARIO
$para '[email protected]'

$asunto 'Nuevo Usuario'
$mailheader "From: ".$_POST["email"]."\r\n"
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n"
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n"
$MESSAGE_BODY "Nombre: ".$_POST["nombre"]."<br>"
$MESSAGE_BODY .= "Email: ".$_POST["email"]."<br>"
$MESSAGE_BODY .= "Contraseña: ".$_POST["contraseña"]."<br>"
$MESSAGE_BODY .= "Sexo: ".$_POST["sexo"]."<br>";
$MESSAGE_BODY .= "Día Cumpleaños: ".$_POST["dianacimiento"]."<br>";
$MESSAGE_BODY .= "Mes Cumpleaños: ".$_POST["mesnacimiento"]."<br>";
$MESSAGE_BODY .= "Año Cumpleaños: ".$_POST["añonacimiento"]."<br>";
$MESSAGE_BODY .= "Imagen: ".$_POST["avatar"]."<br>";
mail($para$asunto$MESSAGE_BODY$mailheader) or die ("Ha sucedido un error al enviar el formulario, por favor espera 15 minutos e inténtalo de nuevo."); 

//MODIFICAR A LA DIRECCIÓN EN SU SERVIDOR
header'Location: /enviado.html' )
?>
No creo que influya, pero mi pagina web está alojada en mi propio servidor, y el sistema de mensajería que estoy utilizando es el "Mecury/32"

Un saludo y muchas gracias a todos
  #2 (permalink)  
Antiguo 16/10/2011, 06:38
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 12 años, 11 meses
Puntos: 17
Respuesta: Enviar imagen en formulario web

Bueno la verdad que te recomiendo usar la class PHPMailer, ya que para envio de mails es super sencillo y rapido. Con la class PHPMailer puedes hacer lo que deseas sin problemas.

Igual si quieres seguir usando mail() aqui te dejo este aparto que e visto espero que te sirva.

http://www.webviva.com/biblioteca/modules.php?name=News&file=article&sid=70

Un saludo!
  #3 (permalink)  
Antiguo 16/10/2011, 07:10
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 12 años, 8 meses
Puntos: 297
Respuesta: Enviar imagen en formulario web

Lo que necesitas es decirle al formulario que va a enviar archivos (imágenes) a parte de texto, eso se hace con el atributo enctype en el propio form, o sea:

Código HTML:
Ver original
  1. <form enctype="multipart/form-data">
  2. [...]
  3. </form>
  #4 (permalink)  
Antiguo 16/10/2011, 07:17
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 12 años, 11 meses
Puntos: 17
Respuesta: Enviar imagen en formulario web

Pero creo que aunque haga eso no le va a funcionar por que el esta llamando a ese archivo mediante '$_POST["avatar"]' y si mal no recuerdo para manipular los type file, era usando $_FILES[] y aunque lo haga lo maximo que va hacer es enviarle la direccion de la imagen
  #5 (permalink)  
Antiguo 16/10/2011, 08:00
laventanadewindows
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Enviar imagen en formulario web

Hola Muchas gracias por la ayuda, añadí:
enctype="multipart/form-data"

y también modifiqué lo de
Código PHP:
$_FILES 
pero sigue sin recibir ninguna imagen adjunta, es más ya ni siquiera recibo el nombre del archivo.
Alguién más tiene idea como hacerlo?
  #6 (permalink)  
Antiguo 16/10/2011, 08:25
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 12 años, 11 meses
Puntos: 17
Respuesta: Enviar imagen en formulario web

laventanadewindows as provado usando la class PHPMailer la verdad te dejarias de mail() y de cabeceras, etc.

Y http://www.webviva.com/biblioteca/modules.php?name=News&file=article&sid=70 creo que sale lo que tu buscas.

Un saludo
  #7 (permalink)  
Antiguo 16/10/2011, 08:38
laventanadewindows
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Enviar imagen en formulario web

Si he estado mirando lo que me has buscado, pero del PHP Mailer es que lo leo no me entero de nada, me costó mucho que funcionara el mail() y no se como aprendermelo de otra cosa.

El otro link que me dejas tiene buena pinta, pero me parece entender que lo que hace es enviar un iimagen determinada que ya tienes alojada en tu servidor, y no una que suba el usuario.

De todas maneras seguire intentandolo.
Un saludo y gracias :)
  #8 (permalink)  
Antiguo 16/10/2011, 09:04
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 12 años, 11 meses
Puntos: 17
Respuesta: Enviar imagen en formulario web

Pero eso lo puedes cambiar tu usando la variable que almacena la imagen.

Aqui te dejo este link que seguro que te interesa.

http://blog.unijimpe.net/enviar-email-con-php-y-gmail/

Un saludo!
  #9 (permalink)  
Antiguo 16/10/2011, 11:02
laventanadewindows
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Enviar imagen en formulario web

Hola, resulta que ya preparé el código PHP cambiandolo un poco con el link de webviva que me distes, y no se sería mjucha molestia indicarme como debo cambiar la variable para que coja la imagen que da el usuario, no la de mi servidor.

Además me da este error :

Código:
Parse error: syntax error, unexpected T_VARIABLE in C:\xampp\htdocs\PHP\procesar.php on line 11
El código que estoy usando ahora es este:

Código PHP:
<?php 
// INGRESE EL EMAIL DONDE RECIBIRÁ LOS DATOS DEL FOMULARIO
$para '[email protected]'
$mi_fichero="imagen.png";
$tamanio_fichero=filesize($mi_fichero);
$puntero=fopen($mi_fichero,"r");
$contenido=fread($puntero,$tamanio_fichero);
fclose($puntero);
$contenido_codificadochunk_split(base64_encode($contenido));
$separador_inicial="--Mi-Separador"
$mailheader_mensaje "\nContent-type: text/plain; charset=US-ASCII\n";
$mailheader_mensaje .= "Content-transfer-encoding: 7BIT\n\n";
$separador "\n\n--Mi-Separador\n";
$mailheader_anexo "Content-type:image/gif; name=\"miimagen.gif\"\n";
$mailheader_anexo  .= "Content-Transfer-Encoding: BASE64\n";
$mailheader_anexo .= "Content-disposition: attachment; filename=\"miimagen.gif\"\n\n";
$asunto 'Nuevo Usuario'
$mailheader "From: ".$_POST["email"]."\r\n"
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n"
$mailheader .= "MIME-version: 1.0\n"
$mailheader .= "Content-type: multipart/mixed; boundary="Mi-Separador"\n"
$mailheader .= "Content-transfer-encoding: 7BIT"
$MESSAGE_BODY=$separador_inicial;
$MESSAGE_BODY.=$cabecera_mensaje;
$MESSAGE_BODY.=$separador;
$MESSAGE_BODY.=$cabecera_anexo;
$MESSAGE_BODY.=$contenido_codificado;
$MESSAGE_BODY.="\n".$separador_inicial."--\n"
$MESSAGE_BODY .= "Nombre: ".$_POST["nombre"]."<br>"
$MESSAGE_BODY .= "Email: ".$_POST["email"]."<br>"
$MESSAGE_BODY .= "Contraseña: ".$_POST["contraseña"]."<br>"
$MESSAGE_BODY .= "Sexo: ".$_POST["sexo"]."<br>";
$MESSAGE_BODY .= "Día Cumpleaños: ".$_POST["dianacimiento"]."<br>";
$MESSAGE_BODY .= "Mes Cumpleaños: ".$_POST["mesnacimiento"]."<br>";
$MESSAGE_BODY .= "Año Cumpleaños: ".$_POST["añonacimiento"]."<br>";
$MESSAGE_BODY .= "Imagen: ".$_FILE["avatar"]."<br>";
mail($para$asunto$MESSAGE_BODY$mailheader) or die ("Ha sucedido un error al enviar el formulario, por favor espera 15 minutos e inténtalo de nuevo."); 

//MODIFICAR A LA DIRECCIÓN EN SU SERVIDOR
header'Location: /enviado.html' )
?>
A ver que es lo que puedo hacer ahora
  #10 (permalink)  
Antiguo 16/10/2011, 11:49
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 12 años, 11 meses
Puntos: 17
Respuesta: Enviar imagen en formulario web

En
Cita:
$separador_inicial="--Mi-Separador"
se te han olvidado el punto y coma.

Quedaria a si:
Cita:
$separador_inicial="--Mi-Separador";
__________________
Twitter: @ed33x
  #11 (permalink)  
Antiguo 16/10/2011, 12:06
laventanadewindows
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Enviar imagen en formulario web

Lo cambié pero ahora me da este error:

Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\PHP\procesar.php on line 21
  #12 (permalink)  
Antiguo 16/10/2011, 14:36
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 12 años, 11 meses
Puntos: 17
Respuesta: Enviar imagen en formulario web

Dejalo a si :

Cita:
$mailheader .= "Content-type: multipart/mixed; boundary='Mi-Separador'\n";
Cambiando las 2 comillas de Mi-Separador por '
Dime si te manda otro error, sino dentro de unas horas te dejo listo como enviar mails via phpmailer.
Saludos.
__________________
Twitter: @ed33x

Etiquetas: formulario, html, imagenes, input
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 23:57.