Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/04/2007, 11:14
nelsongn
 
Fecha de Ingreso: junio-2003
Ubicación: Isla de Margarita
Mensajes: 22
Antigüedad: 20 años, 10 meses
Puntos: 0
Enviar archivo adjunto desde formulario

amigos... tengo un codigo que consegui por la red que funciona genial... pero tengo muy poo conocimiento de php, y quiero modificar con su ayuda una parte... les pongo el codigo y les explico

Código PHP:
<?php 
    
// Para el envío de mails
    
include_once('class.phpmailer.php');
    
// Indica si los datos provienen del formulario
    
$postback = isset($_POST['postback']) ? true false;
    
    if (
$postback) {
        
extract($_POST);
        
$mail = new phpmailer (); # Crea una instancia
        
$mail -> From $from;
        
$mail -> FromName $from#"BuayaCorp"; Puede obtenerse del formulario, por facilidad se hace de esta manera
        
$mail->AddAddress("[email protected]","ASONEF"); 
        
$mail->AddBCC("[email protected]"); 
        
$mail -> Subject $sbj;
        
$mail -> Body $msg;
        
$mail -> IsHTML (true);
        
$archivos '';
        
$msg "Mensaje Enviado";
        
           if (isset (
$_FILES["archivos"])) { # Si es que se subió algún archivo
            
$msg .= "<ul>";
            foreach (
$_FILES["archivos"]["error"] as $key => $error) { # Iterar sobre la colección de archivos
                
if ($error == UPLOAD_ERR_OK) { // Si no hay error
                    
$tmp_name $_FILES["archivos"]["tmp_name"][$key];
                    
$name $_FILES["archivos"]["name"][$key];
                    
$msg .= "<li>$name</li>";
                    
$name uniqid('bc') . '_' $name# Generar un nombre único para el archivo
                    
$mail -> AddAttachment ($tmp_name$name); # Añade el archivo adjunto
                    /*
                    Si se van a guardar los archivos en un directorio, deberían descomentarse
                    las siguientes líneas, si se van a guardar los nombres 
                    de los archivos en una base de datos, aquí debería realizarse algo...                    
                       
                    move_uploaded_file($tmp_name, "ruta/directorio/$name"); # Guardar el archivo en una ubicación, debe tener los permisos necesarios
                    */
                
#if
               
# foreach
            
$msg .= '</ul>';
        } 
# if
        
if (!$mail -> Send ()){
            
$msg "No se pudo enviar el email";
        }
    }
?>
<head>
<title>Multiple Upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
body {
    font: small "Trebuchet MS";
}
#disclaimer {
    background-color: #fafafa;
    padding: 1em;
    border: 3px double #ccc;
}
/*************************/
/* Necesario para que se muestre bien los nuevos elementos agregados */
.file {
    display: block;
}
span a {
    margin-left: 1em;
}
/*************************/
input, textarea {
    border:3px double #ccc;
    background-color:#fafafa;
}
</style>
<script type="text/javascript">
var numero = 0;

// Funciones comunes
c= function (tag) { // Crea un elemento
   return document.createElement(tag);
}
d = function (id) { // Retorna un elemento en base al id
   return document.getElementById(id);
}
e = function (evt) { // Retorna el evento
   return (!evt) ? event : evt;
}
f = function (evt) { // Retorna el objeto que genera el evento
   return evt.srcElement ?  evt.srcElement : evt.target;
}

addField = function () {
   container = d('files');
   
   span = c('SPAN');
   span.className = 'file';
   span.id = 'file' + (++numero);

   field = c('INPUT');   
   field.name = 'archivos[]';
   field.type = 'file';
   
   a = c('A');
   a.name = span.id;
   a.href = '#';
   a.onclick = removeField;
   a.innerHTML = 'Quitar';

   span.appendChild(field);
   span.appendChild(a);
   container.appendChild(span);
}
removeField = function (evt) {
   lnk = f(e(evt));
   span = d(lnk.name);
   span.parentNode.removeChild(span);
}
</script>
</head>

<body>
<?php if (isset($msg)) echo $msg;?>
<form name="frm" id="frm" action="" method="post" enctype="multipart/form-data">
    <dl>
      <dt><label for="to" accesskey="1"></label>
        </dt>
        <dt><label for="from" accesskey="2">De</label></dt>
        <dd><input type="text" name="from" id="from" size="60" /></dd>
        
        <dt><label for="sbj" accesskey="3">Asunto</label></dt>
        <dd><input type="text" name="sbj" id="sbj" size="60" /></dd>
        
        <dt><label for="msg" accesskey="4">Mensaje</label></dt>
        <dd><textarea id="msg" name="msg" rows="7" cols="45"></textarea></dd>
        
        <dt><label>Archivos Adjuntos:</label>&nbsp;&nbsp;&nbsp;<a href="#" onClick="addField()" accesskey="5">A&ntilde;adir Archivo</a></dt>
        <dd><div id="files"></div></dd>
        <dd><input type="submit" value="Enviar" id="postback" name="postback" accesskey="6" /></dd>
   </dl>
</form>
</body>
</html>
Al final hay un link creado por Javascript que cada vez que se linkea abre una nueva caja para cargar archivo... osea, da la opcion de cargar cuantos archivos quiera... quiero que esa caja aparezca una vez se carga el formulario y que solo se cargue una, osea quitarle el codigo java y dejarlo directo por php...

Adicional a eso quiero saber como agregarle mas campos (nombre, apellido,edad,direccion, ciudad, etc.) y que cuando lleguen al correo lleguen en el cuerpo del mensaje.

Agradezco su ayuda...

Ej