Foros del Web » Programando para Internet » PHP »

enviar archivo adjunto por formulario php

Estas en el tema de enviar archivo adjunto por formulario php en el foro de PHP en Foros del Web. Hola que tal, les cuento; tengo un formulario echo con php y funciona todo correcto, quiero que envie archivos adjuntos y ya le puse la ...
  #1 (permalink)  
Antiguo 27/11/2009, 14:58
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 8 meses
Puntos: 5
enviar archivo adjunto por formulario php

Hola que tal, les cuento; tengo un formulario echo con php y funciona todo correcto, quiero que envie archivos adjuntos y ya le puse la etiqueta input type="file" pero no se como hacerle para que se envie el archivo adjunto, aqui esta el codigo:

Código PHP:
<?php if (!isset($_POST['email'])) { ?>
  
<form action="<?=$_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data">

  <fieldset><legend>Informacion personal</legend>
  <dl><dt><label for="nombre">Nombre:</label></dt>
  <dd><input name="nombre" type="text" id="nombre" /></dl></dd>
  
  <dl><dt><label for="email">Email:</label></dt>
  <dd><input name="email" type="text" id="email" /></dl></dd></fieldset>
  
  <fieldset><legend>Envio de informacion</legend>
  <dl><dt><label for="colaboracion">Tipo de colaboracion:</label></dt>
  <dd><select name="colaboracion" id="colaboracion">
    <option value="guias">Envio de guias</option>
    <option value="logros">Envio de Logros</option>
    <option value="trucos">Envio de trucos</option>
  </select></dd></dl>
  
  <dl><dt><label for="adjunto">Archivo adjunto:</label></dt>
  <dd><input type="file" name="archivo"></dd></dl></fieldset>
  
  <fieldset><legend>Comentarios</legend>
  <dl><dt><label for="mansaje">Mensaje:</label></dt>
  <dd><textarea name="mensaje" id="mensaje"></textarea></dd></dl></fieldset>

  <input type="submit" value="enviar" />
</form>  
    
<?php }else{
  
$msg"Mensaje del formulario de contacto de XboxNetwork";  
  
$msg.= "\nNombre: "$_POST['nombre'];  
  
$msg.= "\nEmail: ".$_POST['email'];
  
$msg.= "\nColaboracion: Envio de ".$_POST['colaboracion'];
  
$msg.= "\nMensaje: ".$_POST['mensaje'];  
  
$remitente $_POST['email'];
  
$subject "Mensaje enviado desde mi pagina por: ".$_POST['nombre'];
  
mail('[email protected]'$subject$msg"FROM: $remitente");   
?>  

  <p><strong>Mensaje enviado.</strong><br />  
  Su mensaje se ha enviado correctamente, gracias por ponerse en contacto con nosotros</p> 
  
  <? ?>
Saludos y muchas gracias de antemano
  #2 (permalink)  
Antiguo 27/11/2009, 15:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: enviar archivo adjunto por formulario php

haciendo uso de mail() es muy complicado si no sabes, como adjuntar un archivo...

te sugiero uses la librería PHPMailer para hacerlo mas sencillo, suerte!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 27/11/2009, 15:45
Avatar de gigoz  
Fecha de Ingreso: noviembre-2009
Mensajes: 106
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: enviar archivo adjunto por formulario php

con esta funcion puede enviar correo con archivos adjuntos ami me funciona bien...

function enviar_correo_con_archivo($destino,$origen,$mensaj e,$asunto,$archivo){
$file = fopen($archivo, "r");
$contenido = fread($file, filesize($archivo));
$encoded_attach = chunk_split(base64_encode($contenido));
fclose($file);

$cabeceras = "From: $origen>\n";
$cabeceras .= "MIME-version: 1.0\n";
$cabeceras .= "Content-type: multipart/mixed; ";
$cabeceras .= "boundary=\"Message-Boundary\"\n";
$cabeceras .= "Content-transfer-encoding: 7BIT\n";
$cabeceras .= "X-attachments: $archivo";
$body_top = "--Message-Boundary\n";
$body_top .= "Content-type: text/html; charset=US-ASCII\n";
$body_top .= "Content-transfer-encoding: 7BIT\n";
$body_top .= "Content-description: Mail message body\n\n";
$cuerpo = $body_top.$mensaje;

$nombref=$archivo;
$cuerpo .= "\n\n--Message-Boundary\n";
$cuerpo .= "Content-type: Binary; name=\"$nombref\"\n";
$cuerpo .= "Content-Transfer-Encoding: BASE64\n";
$cuerpo .= "Content-disposition: attachment; filename=\"$nombref\"\n\n";
$cuerpo .= "$encoded_attach\n";
$cuerpo .= "--Message-Boundary--\n";

ini_set('SMTP',"mailbog");
ini_set('smtp_port','25');
mail($destino, $asunto, $cuerpo, $cabeceras);
}


cualquier duda preguntar....
  #4 (permalink)  
Antiguo 28/11/2009, 15:27
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 8 meses
Puntos: 5
Respuesta: enviar archivo adjunto por formulario php

hola que tal, muchas gracias por responder, tratare mejor de hacerlo con PHPMailer,,, oye gigoz la funcion que pones es PHPMailer o mail()???

saludos!!!
  #5 (permalink)  
Antiguo 28/11/2009, 19:47
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Respuesta: enviar archivo adjunto por formulario php

es mail haciendo uso de ini_set que forza cambiar valores de php.ini :P
__________________
Hospedaje Web al mejor costo!
  #6 (permalink)  
Antiguo 23/12/2009, 16:21
 
Fecha de Ingreso: marzo-2007
Mensajes: 19
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: enviar archivo adjunto por formulario php

A mi me sirvió un archivo de nosetup.org que encontré en un blog, lo bueno es que hace todo solo y es recontra personalizable.

Ver link: http://informatica-practica.net/wordpress/index.php/2009/08/24/formulario-de-contacto-con-archivos-adjuntos-en-php-sin-mysql/

Por cierto, lo único que no me funkaba bien es la parte del validador de correos, pero la cambié y listo, sólo puse lo siguiente:

Código:
	if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$", $email)){
		return FALSE;
	} else {
		return TRUE;
	}
Ojalá eso te ayude.

Saludos,
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:46.