Foros del Web » Programando para Internet » PHP »

Archivos del servidor, al mail???

Estas en el tema de Archivos del servidor, al mail??? en el foro de PHP en Foros del Web. Hola, tengo un formulario el cual una vez rellenado lo manda directamente al mail, en el cual se insertan 5 archivos que los manda a ...
  #1 (permalink)  
Antiguo 09/01/2012, 16:24
 
Fecha de Ingreso: enero-2012
Ubicación: Barcelona
Mensajes: 71
Antigüedad: 12 años, 3 meses
Puntos: 1
Archivos del servidor, al mail???

Hola, tengo un formulario el cual una vez rellenado lo manda directamente al mail, en el cual se insertan 5 archivos que los manda a una carpeta en mi servidor.

Lo que me gustaría saber es como decirle al php que los archivos guardados en dicha carpeta los mande a la vez como datos adjuntos en ese mismo mail y los borre de la carpeta.

Gracias de antemano.

Código HTML:
Ver original
  1. <form action="Registro.php" method="post" enctype="multipart/form-data">
  2.     <td class="text">
  3.       <input name="archivo1" type="file" class="casilla" id="archivo1" size="35" />
  4.       <input name="archivo2" type="file" class="casilla" id="archivo2" size="35" />
  5.       <input name="archivo3" type="file" class="casilla" id="archivo3" size="35" />
  6.       <input name="archivo4" type="file" class="casilla" id="archivo4" size="35" />
  7.       <input name="archivo5" type="file" class="casilla" id="archivo5" size="35" />
  8.  
  9.       <input name="action" type="hidden" value="upload" />    </td>
  10.     </form>
  11.   </tr>
  12.   <tr>
  13.     <td class="text" style="color:#990000"><?php echo $status; ?></td>
  14.   </tr>
  15.   <tr>

Código PHP:
    <?php 
    
if ($gestor opendir('files')) {
        echo 
"<ul>";
        while (
false !== ($arch readdir($gestor))) {
           if (
$arch != "." && $arch != "..") {
               echo 
"<li><a href=\"files/".$arch."\" class=\"linkli\">".$arch."</a></li>\n";
           }
        }
        
closedir($gestor);
        echo 
"</ul>";
    }
    
?>    </td>
  </tr>
</table>
</body>
</html>

<?php 
$status 
"";
if (
$_POST["action"] == "upload") {
    
// obtenemos los datos del archivo 
    
$tamano $_FILES["archivo1"]['size'];
    
$tipo $_FILES["archivo1"]['type'];
    
$archivo1 $_FILES["archivo1"]['name'];
    
$prefijo substr(md5(uniqid(rand())),0,6);
    

    if (
$archivo1 != "") {
        
// guardamos el archivo a la carpeta files
        
$destino =  "files/".$prefijo."_".$archivo1;
        if (
copy($_FILES['archivo1']['tmp_name'],$destino)) {
            
$status "Archivo subido: <b>".$archivo1."</b>";
        } else {
            
$status "Error al subir el archivo";
        }
    } else {
        
$status "Error al subir archivo";
    }
}
?>
<?php 
$status 
"";
if (
$_POST["action"] == "upload") {
    
// obtenemos los datos del archivo 
    
$tamano $_FILES["archivo2"]['size'];
    
$tipo $_FILES["archivo2"]['type'];
    
$archivo2 $_FILES["archivo2"]['name'];
    
$prefijo substr(md5(uniqid(rand())),0,6);
    

    if (
$archivo2 != "") {
        
// guardamos el archivo a la carpeta files
        
$destino =  "files/".$prefijo."_".$archivo2;
        if (
copy($_FILES['archivo2']['tmp_name'],$destino)) {
            
$status "Archivo subido: <b>".$archivo2."</b>";
        } else {
            
$status "Error al subir el archivo";
        }
    } else {
        
$status "Error al subir archivo";
    }
}
?>
<?php 
$status 
"";
if (
$_POST["action"] == "upload") {
    
// obtenemos los datos del archivo 
    
$tamano $_FILES["archivo3"]['size'];
    
$tipo $_FILES["archivo3"]['type'];
    
$archivo3 $_FILES["archivo3"]['name'];
    
$prefijo substr(md5(uniqid(rand())),0,6);
    

    if (
$archivo3 != "") {
        
// guardamos el archivo a la carpeta files
        
$destino =  "files/".$prefijo."_".$archivo3;
        if (
copy($_FILES['archivo3']['tmp_name'],$destino)) {
            
$status "Archivo subido: <b>".$archivo3."</b>";
        } else {
            
$status "Error al subir el archivo";
        }
    } else {
        
$status "Error al subir archivo";
    }
}
?>
<?php 
$status 
"";
if (
$_POST["action"] == "upload") {
    
// obtenemos los datos del archivo 
    
$tamano $_FILES["archivo4"]['size'];
    
$tipo $_FILES["archivo4"]['type'];
    
$archivo4 $_FILES["archivo4"]['name'];
    
$prefijo substr(md5(uniqid(rand())),0,6);
    

    if (
$archivo4 != "") {
        
// guardamos el archivo a la carpeta files
        
$destino =  "files/".$prefijo."_".$archivo4;
        if (
copy($_FILES['archivo4']['tmp_name'],$destino)) {
            
$status "Archivo subido: <b>".$archivo4."</b>";
        } else {
            
$status "Error al subir el archivo";
        }
    } else {
        
$status "Error al subir archivo";
    }
}
?>
<?php 
$status 
"";
if (
$_POST["action"] == "upload") {
    
// obtenemos los datos del archivo 
    
$tamano $_FILES["archivo5"]['size'];
    
$tipo $_FILES["archivo5"]['type'];
    
$archivo5 $_FILES["archivo5"]['name'];
    
$prefijo substr(md5(uniqid(rand())),0,6);
    

    if (
$archivo5 != "") {
        
// guardamos el archivo a la carpeta files
        
$destino =  "files/".$prefijo."_".$archivo5;
        if (
copy($_FILES['archivo5']['tmp_name'],$destino)) {
            
$status "Archivo subido: <b>".$archivo5."</b>";
        } else {
            
$status "Error al subir el archivo";
        }
    } else {
        
$status "Error al subir archivo";
    }
}
?>

<?php 
             
$mail
='mi correo';

$Nombre $_POST['nombre']; 
$Edad $_POST['edad']; 
$Nacionalidad $_POST['nacionalidad']; 
$Telefono $_POST['telefono']; 
$Correo_electrónico $_POST['correo']
$Idiomas $_POST['idiomas']; 

 
$header 'From: ' .$Correo_electrónico " \r\n"
$header .= "X-Mailer: PHP/" phpversion() . " \r\n"
$header .= "Mime-Version: 1.0 \r\n"
$header .= "Content-Type: text/plain"

 
$mensaje .= "DATOS PERSONALES \r\n""\r\n";

$mensaje .= "Este mensaje fue enviado por : " $Nombre." \r\n";  
$mensaje .= "Edad  : " $Edad." \r\n";
$mensaje .= "Telefono : " $Telefono." \r\n";
$mensaje .= "Nacionalidad : " $Nacionalidad." \r\n";
$mensaje .= "Su e-mail es : " $Correo_electrónico."\r\n \r\n";
$mensaje .= "Idiomas :"$Idiomas." \r\n \r\n"



$para 'mi correo'
$asunto 'Registro Nuevo'

mail($para$asuntoutf8_decode($mensaje), $header);



?>
Me falta poner en el php como mandar esos archivos al mail y luego que los borre del servidor.

Otra vez mil gracias.
  #2 (permalink)  
Antiguo 09/01/2012, 20:35
 
Fecha de Ingreso: diciembre-2011
Mensajes: 26
Antigüedad: 12 años, 4 meses
Puntos: 4
Respuesta: Archivos del servidor, al mail???

para adjuntar archivos al correo tienes que usar phpmailer..
  #3 (permalink)  
Antiguo 10/01/2012, 04:57
Avatar de jercer  
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 20 años, 6 meses
Puntos: 13
Respuesta: Archivos del servidor, al mail???

Código PHP:
Ver original
  1. <?php
  2. // Copyright © McAnam.com
  3. // http://www.mcanam.com/articulos/PHP.php?id=8
  4.      
  5.     function form_mail($sPara, $sAsunto, $sTexto, $sDe)
  6.     {
  7.      
  8.         $bHayFicheros = 0;
  9.         $sCabeceraTexto = "";
  10.         $sAdjuntos = "";
  11.         $sCuerpo = $sTexto;
  12.         $sSeparador = uniqid("_Separador-de-datos_");
  13.          
  14.         $sCabeceras = "MIME-version: 1.0\n";
  15.          
  16.         // Recogemos los campos del formulario
  17.         foreach ($_POST as $sNombre => $sValor)
  18.             $sCuerpo = $sCuerpo."\n".$sNombre." = ".$sValor;
  19.              
  20.         // Recorremos los Ficheros
  21.         foreach ($_FILES as $vAdjunto)
  22.         {
  23.              
  24.             if ($bHayFicheros == 0)
  25.             {
  26.                  
  27.                 // Hay ficheros
  28.                  
  29.                 $bHayFicheros = 1;
  30.                  
  31.                 // Cabeceras generales del mail
  32.                 $sCabeceras .= "Content-type: multipart/mixed;";
  33.                 $sCabeceras .= "boundary=\"".$sSeparador."\"\n";
  34.                  
  35.                 // Cabeceras del texto
  36.                 $sCabeceraTexto = "--".$sSeparador."\n";
  37.                 $sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
  38.                 $sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n\n";
  39.                  
  40.                 $sCuerpo = $sCabeceraTexto.$sCuerpo;
  41.                  
  42.             }
  43.              
  44.             // Se añade el fichero
  45.             if ($vAdjunto["size"] > 0)
  46.             {
  47.                 $sAdjuntos .= "\n\n--".$sSeparador."\n";
  48.                 $sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";
  49.                 $sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
  50.                 $sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";                  
  51.                  
  52.                 $oFichero = fopen($vAdjunto["tmp_name"], 'rb');
  53.                 $sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
  54.                 $sAdjuntos .= chunk_split(base64_encode($sContenido));
  55.                 fclose($oFichero);
  56.             }
  57.              
  58.         }
  59.          
  60.         // Si hay ficheros se añaden al cuerpo
  61.         if ($bHayFicheros)
  62.             $sCuerpo .= $sAdjuntos."\n\n--".$sSeparador."--\n";
  63.          
  64.         // Se añade la cabecera de destinatario
  65.         if ($sDe)$sCabeceras .= "From:".$sDe."\n";
  66.          
  67.         // Por último se envia el mail
  68.         return(mail($sPara, $sAsunto, $sCuerpo, $sCabeceras));
  69.     }
  70.          
  71.         //Ejemplo de como usar:
  72.         if (form_mail("[email protected]",
  73.                                     "Activación de formulario",
  74.                                     "Los datos introducidos en el formulario son:\n",
  75.                                     "[email protected]"))
  76.         echo "Su formulario ha sido enviado con exito";
  77.          
  78.         // Ejemplo de como usar, poniendo como remitente el campo pasado de E-mail
  79.         /*
  80.         if (form_mail("[email protected]",
  81.                                     "Activación de formulario",
  82.                                     "Los datos introducidos en el formulario son:\n",
  83.                                     $_POST["E-mail"]))
  84.         echo "Su formulario ha sido enviado con exito";
  85.         */
  86.          
  87.  
  88. ?>
  #4 (permalink)  
Antiguo 10/01/2012, 05:07
 
Fecha de Ingreso: enero-2012
Ubicación: Barcelona
Mensajes: 71
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Archivos del servidor, al mail???

El código este que pusiste es para recoger los archivos directamente del mail??

Pero si los quiero recoger de la carpeta files que tengo en el servidor? y luego al enviarlos que los borre de la carpeta.

Estoy muy perdido en ese paso soy muy novato, es mi primer formulario.

Un saludo
  #5 (permalink)  
Antiguo 10/01/2012, 05:15
Avatar de jercer  
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 20 años, 6 meses
Puntos: 13
Respuesta: Archivos del servidor, al mail???

El ejemplo, coge los archivos enviados mediante post (se guardan en el directorio temporal) y los envia al email.

En teoría el directorio temporal se limpia periodicamente, por lo que no tendrías que preocuparte de eliminarlos.

Supongo que es mas o menos lo que quieres no?
  #6 (permalink)  
Antiguo 10/01/2012, 05:19
 
Fecha de Ingreso: enero-2012
Ubicación: Barcelona
Mensajes: 71
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Archivos del servidor, al mail???

Correcto, pero la cuestión es a ver si me aclaro, entonces cuando alguien rellene el formulario adjunte los 5 archivos y le de a enviar, los archivos se guardan en mi servidor, a su vez el formulario y los archivos se envían a mi correo, y después de cierto tiempo se borran??

Pero y si momentos antes se a registrado alguien y esos archivos están en la misma carpeta del servidor, también se mandaran??

Por ese motivo me gustaría que se borrasen una vez enviado el mail.
  #7 (permalink)  
Antiguo 10/01/2012, 05:38
Avatar de jercer  
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 20 años, 6 meses
Puntos: 13
Respuesta: Archivos del servidor, al mail???

Eso no puede pasar, ya que cada archivo tiene un nombre único (tmp_name).

Es decir, cuando se envia el formulario, PHP hace 2 cosas:

1 - Carga el array $_POST con los campos pasados (name=>Valor)
2 - Carga el array $FILES con los datos de los ficheros pasados. Cada elemento contiene:

'name' => Nombre original del fichero
'type' => Tipo de fichero
'tmp_name' => Nombre temporal y único del fichero en nuestro servidor
'error' => Código de error
'size' => Tamaño del fichero

Por lo que teniendo en cuenta que la variable $_FILES, sólo hará referencia a los archivos subidos en esa petición y el nombre en nuestro servidor no será el original (name), sino el "único" (tmp_name), aunque tuvieses 100 archivos en este directorio, sólo se enviaría el que fue subido en esa petición, aun llamandose originalmente igual.


Por cierto antes que me preguntes, el archivo no es pasado con su nombre "temporal", sino con el original estableciendolo en la cabecera:

$sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";
  #8 (permalink)  
Antiguo 10/01/2012, 05:41
Avatar de jercer  
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 20 años, 6 meses
Puntos: 13
Respuesta: Archivos del servidor, al mail???

Leyendo mi mensaje, aclarar que 'tmp_name', no sólo contiene el "nombre" sino la "dirección" completa del archivo en nuestro servidor,

Es decir:

DIRECTORIO_TEMPORAL/NOMBRE_TEMPORAL
  #9 (permalink)  
Antiguo 10/01/2012, 05:46
 
Fecha de Ingreso: enero-2012
Ubicación: Barcelona
Mensajes: 71
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Archivos del servidor, al mail???

jejejejeje.

Muchas gracias, estoy ajustando el código que me diste a mi php a ver si consigo enviarlo, lo estoy haciendo primero con el archivo1 de mi código php, imagino que ese mismo proceso lo tendré que repetir tantas veces como archivos quiera que me manden.
  #10 (permalink)  
Antiguo 10/01/2012, 05:49
Avatar de jercer  
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 20 años, 6 meses
Puntos: 13
Respuesta: Archivos del servidor, al mail???

En teoría coge todos los archivos enviados.

De todas formas es un ejemplo, que como bién dices puedes (y debes) modificar para ajustarlo a tus necesidades.

Ya me contarás si te sirvio.
  #11 (permalink)  
Antiguo 10/01/2012, 06:07
 
Fecha de Ingreso: enero-2012
Ubicación: Barcelona
Mensajes: 71
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Archivos del servidor, al mail???

En algo fallo, pero no estoy seguro en que.
  #12 (permalink)  
Antiguo 10/01/2012, 06:11
Avatar de jercer  
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 20 años, 6 meses
Puntos: 13
Respuesta: Archivos del servidor, al mail???

que error te da?

Cómo has dejado el código?
Para que funcione en principio, sólo deberías cambiar "[email protected]" y "[email protected]" por tu dirección de correo.
  #13 (permalink)  
Antiguo 10/01/2012, 06:23
 
Fecha de Ingreso: enero-2012
Ubicación: Barcelona
Mensajes: 71
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Archivos del servidor, al mail???

No, error no sale.

Con lo que me dijiste, me perdí. jajajajaja

Del código que me diste cogí las siguientes partes y las añadí a mi código php

Código PHP:
Ver original
  1. // Recorremos los Ficheros
  2.         foreach ($_FILES as $vAdjunto)
  3.         {
  4.              
  5.          if ($bHayFicheros == 0)
  6.         {
  7.                  
  8.                 // Hay ficheros
  9.                  
  10.      $bHayFicheros = 1;
  11.      }
  12.  
  13. // Se añade el fichero
  14.             if ($vAdjunto["size"] > 0)
  15.             {
  16.                 $sAdjuntos .= "\n\n--".$sSeparador."\n";
  17.                 $sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";
  18.                 $sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
  19.                 $sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";                  
  20.                  
  21.                 $oFichero = fopen($vAdjunto["tmp_name"], 'rb');
  22.                 $sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
  23.                 $sAdjuntos .= chunk_split(base64_encode($sContenido));
  24.                 fclose($oFichero);
  25.             }
  26.              
  27.         }
  28.  
  29.     // Si hay ficheros se añaden al cuerpo
  30.         if ($bHayFicheros)
  31.             $sCuerpo .= $sAdjuntos."\n\n--".$sSeparador."--\n";

En mi htlm cambie lo siguiente:

<input name="archivo1" type="file" class="casilla" id="archivo1" size="35" />

Por esto otro:

<input name="sAdjuntos" type="file" class="casilla" id="archivo1" size="35" />

Eso de cambiar solo los correos??
Entonces que tengo que pegar todo a mi php??
  #14 (permalink)  
Antiguo 10/01/2012, 06:43
 
Fecha de Ingreso: enero-2012
Ubicación: Barcelona
Mensajes: 71
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Archivos del servidor, al mail???

Cambie el correo de destino y lo inserte todo en mi php, envia los datos del formulario y envia los archivos, pero me manda 2 veces el mail.

Uno del php que yo he creado y otro del código que me diste.

Lo que me gustaría es adaptar el código que me diste a mi código php
  #15 (permalink)  
Antiguo 10/01/2012, 06:58
Avatar de jercer  
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 20 años, 6 meses
Puntos: 13
Que tal,

Pues de principio todo lo que quitaste en "if ($bHayFicheros == 0)"

Lo que hace es "decir" que el mail será "multiparte", es decir, en tu caso vendrían 2 partes:

1 - El texto del email
2 - El fichero adjunto

Por lo que sería obligatorio.

Por otra parte en el HTML no hace falta que cambies nada.


parece que tienes dudas con la linea "foreach ($_FILES as $vAdjunto)"
Esto lo que hace, es recorrer el array con los archivos enviados, es decir, da igual el nombre con el que venga.

Si lo quieres hacer más personalizado en tu caso con un sólo fichero llamado (ahora) sAdjuntos, podrías hacer algo como:

Código PHP:
Ver original
  1. if ($_FILES["sAdjuntos"]["size"] > 0)
  2. {
  3. // Viene el fichero
  4.  
  5. // CABECERAS DEL MAIL (Sólo una vez, aunque vengan varios ficheros)
  6.  
  7. // Cabeceras generales del mail
  8. $sCabeceras .= "Content-type: multipart/mixed;";
  9. $sCabeceras .= "boundary=\"".$sSeparador."\"\n";
  10.                  
  11. // Cabeceras del texto
  12. $sCabeceraTexto = "--".$sSeparador."\n";
  13. $sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
  14. $sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n\n";
  15.                  
  16. $sCuerpo = $sCabeceraTexto.$sCuerpo;
  17.  
  18.  
  19. // SE GUARDA EL FICHERO (una vez por cada fichero)
  20.  
  21. $sAdjuntos .= "\n\n--".$sSeparador."\n";
  22. $sAdjuntos .= "Content-type: ".$_FILES["sAdjuntos"]["type"].";name=\"".$_FILES["sAdjuntos"]["name"]."\"\n";
  23. $sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
  24. $sAdjuntos .= "Content-disposition: attachment;filename=\"".$_FILES["sAdjuntos"]["name"]."\"\n\n";                  
  25.  
  26. $oFichero = fopen($_FILES["sAdjuntos"]["tmp_name"], 'rb');
  27. $sContenido = fread($oFichero, filesize($_FILES["sAdjuntos"]["tmp_name"]));
  28. $sAdjuntos .= chunk_split(base64_encode($sContenido));
  29. fclose($oFichero);
  30.  
  31. // SE AÑADE EL FICHERO
  32. $sCuerpo .= $sAdjuntos."\n\n--".$sSeparador."--\n";
  33.  
  34.  
  35. }

No lo he probado, pero mas o menos esa es la idea.

Por cierto ten en cuenta también que es la variable "$sCuerpo" la que tiene el texto del mensaje, por lo que en tu código original, esto debería ir después de:

$mensaje .= "Idiomas :". $Idiomas." \r\n \r\n";

y en vez de:
$sCuerpo = $sCabeceraTexto.$sCuerpo;
Poner:
$sCuerpo = $sCabeceraTexto.$mensaje;
  #16 (permalink)  
Antiguo 10/01/2012, 07:28
 
Fecha de Ingreso: enero-2012
Ubicación: Barcelona
Mensajes: 71
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Archivos del servidor, al mail???

Inserte después de:

$mensaje .= "Idiomas :". $Idiomas." \r\n \r\n";

el código que me diste cambiando la linea esta

$sCuerpo = $sCabeceraTexto.$sCuerpo;
Por esta:
$sCuerpo = $sCabeceraTexto.$mensaje;

Ahora recibo solo un mail pero sin los datos

Se nota que soy un novato, jejejejeje
  #17 (permalink)  
Antiguo 10/01/2012, 07:33
Avatar de jercer  
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 20 años, 6 meses
Puntos: 13
Respuesta: Archivos del servidor, al mail???

Supongo que habrás cambiado:

mail($para, $asunto, utf8_decode($mensaje), $header);

Por:

mail($para, $asunto, $sCuerpo , $sCabeceras);


Supongo que habrás incluido las inicializaciones:

$sCabeceraTexto = "";
$sAdjuntos = "";
// Estas 2, imprescindibles
$sSeparador = uniqid("_Separador-de-datos_");
$sCabeceras = "MIME-version: 1.0\n";
  #18 (permalink)  
Antiguo 10/01/2012, 07:41
 
Fecha de Ingreso: enero-2012
Ubicación: Barcelona
Mensajes: 71
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Archivos del servidor, al mail???

Soy muy malooooooo!!!!!

No, no lo puse, pero ahora si, y a la hora de mandar el mail ahora llega en blanco, pone que esta vacío y los archivos tampoco están.

jejejejejeje

eso no será por el cambio de mail
  #19 (permalink)  
Antiguo 10/01/2012, 07:43
Avatar de jercer  
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 20 años, 6 meses
Puntos: 13
Respuesta: Archivos del servidor, al mail???

Muestrame todo el código
  #20 (permalink)  
Antiguo 10/01/2012, 07:49
 
Fecha de Ingreso: enero-2012
Ubicación: Barcelona
Mensajes: 71
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Archivos del servidor, al mail???

Es este:

Código PHP:
Ver original
  1. <?php
  2.     if ($gestor = opendir('files')) {
  3.         echo "<ul>";
  4.         while (false !== ($arch = readdir($gestor))) {
  5.            if ($arch != "." && $arch != "..") {
  6.                echo "<li><a href=\"files/".$arch."\" class=\"linkli\">".$arch."</a></li>\n";
  7.            }
  8.         }
  9.         closedir($gestor);
  10.         echo "</ul>";
  11.     }
  12.     ?>  </td>
  13.   </tr>
  14. </table>
  15. </body>
  16. </html>
  17.  
  18. <?php
  19. $status = "";
  20. if ($_POST["action"] == "upload") {
  21.     // obtenemos los datos del archivo
  22.     $tamano = $_FILES["archivo1"]['size'];
  23.     $tipo = $_FILES["archivo1"]['type'];
  24.     $archivo1 = $_FILES["archivo1"]['name'];
  25.     $prefijo = substr(md5(uniqid(rand())),0,6);
  26.    
  27.  
  28.     if ($archivo1 != "") {
  29.         // guardamos el archivo a la carpeta files
  30.         $destino =  "files/".$prefijo."_".$archivo1;
  31.         if (copy($_FILES['archivo1']['tmp_name'],$destino)) {
  32.             $status = "Archivo subido: <b>".$archivo1."</b>";
  33.         } else {
  34.             $status = "Error al subir el archivo";
  35.         }
  36.     } else {
  37.         $status = "Error al subir archivo";
  38.     }
  39. }
  40. ?>
  41. <?php
  42. $status = "";
  43. if ($_POST["action"] == "upload") {
  44.     // obtenemos los datos del archivo
  45.     $tamano = $_FILES["archivo2"]['size'];
  46.     $tipo = $_FILES["archivo2"]['type'];
  47.     $archivo2 = $_FILES["archivo2"]['name'];
  48.     $prefijo = substr(md5(uniqid(rand())),0,6);
  49.    
  50.  
  51.     if ($archivo2 != "") {
  52.         // guardamos el archivo a la carpeta files
  53.         $destino =  "files/".$prefijo."_".$archivo2;
  54.         if (copy($_FILES['archivo2']['tmp_name'],$destino)) {
  55.             $status = "Archivo subido: <b>".$archivo2."</b>";
  56.         } else {
  57.             $status = "Error al subir el archivo";
  58.         }
  59.     } else {
  60.         $status = "Error al subir archivo";
  61.     }
  62. }
  63. ?>
  64. <?php
  65. $status = "";
  66. if ($_POST["action"] == "upload") {
  67.     // obtenemos los datos del archivo
  68.     $tamano = $_FILES["archivo3"]['size'];
  69.     $tipo = $_FILES["archivo3"]['type'];
  70.     $archivo3 = $_FILES["archivo3"]['name'];
  71.     $prefijo = substr(md5(uniqid(rand())),0,6);
  72.    
  73.  
  74.     if ($archivo3 != "") {
  75.         // guardamos el archivo a la carpeta files
  76.         $destino =  "files/".$prefijo."_".$archivo3;
  77.         if (copy($_FILES['archivo3']['tmp_name'],$destino)) {
  78.             $status = "Archivo subido: <b>".$archivo3."</b>";
  79.         } else {
  80.             $status = "Error al subir el archivo";
  81.         }
  82.     } else {
  83.         $status = "Error al subir archivo";
  84.     }
  85. }
  86. ?>
  87. <?php
  88. $status = "";
  89. if ($_POST["action"] == "upload") {
  90.     // obtenemos los datos del archivo
  91.     $tamano = $_FILES["archivo4"]['size'];
  92.     $tipo = $_FILES["archivo4"]['type'];
  93.     $archivo4 = $_FILES["archivo4"]['name'];
  94.     $prefijo = substr(md5(uniqid(rand())),0,6);
  95.    
  96.  
  97.     if ($archivo4 != "") {
  98.         // guardamos el archivo a la carpeta files
  99.         $destino =  "files/".$prefijo."_".$archivo4;
  100.         if (copy($_FILES['archivo4']['tmp_name'],$destino)) {
  101.             $status = "Archivo subido: <b>".$archivo4."</b>";
  102.         } else {
  103.             $status = "Error al subir el archivo";
  104.         }
  105.     } else {
  106.         $status = "Error al subir archivo";
  107.     }
  108. }
  109. ?>
  110. <?php
  111. $status = "";
  112. if ($_POST["action"] == "upload") {
  113.     // obtenemos los datos del archivo
  114.     $tamano = $_FILES["archivo5"]['size'];
  115.     $tipo = $_FILES["archivo5"]['type'];
  116.     $archivo5 = $_FILES["archivo5"]['name'];
  117.     $prefijo = substr(md5(uniqid(rand())),0,6);
  118.    
  119.  
  120.     if ($archivo5 != "") {
  121.         // guardamos el archivo a la carpeta files
  122.         $destino =  "files/".$prefijo."_".$archivo5;
  123.         if (copy($_FILES['archivo5']['tmp_name'],$destino)) {
  124.             $status = "Archivo subido: <b>".$archivo5."</b>";
  125.         } else {
  126.             $status = "Error al subir el archivo";
  127.         }
  128.     } else {
  129.         $status = "Error al subir archivo";
  130.     }
  131. }
  132. ?>
  133.  
  134. <?php
  135.              
  136.  
  137. $Nombre = $_POST['nombre'];
  138. $Edad = $_POST['edad'];
  139. $Nacionalidad = $_POST['nacionalidad'];
  140. $Telefono = $_POST['telefono'];
  141. $Correo_electrónico = $_POST['correo'];
  142. $Idiomas = $_POST['idiomas'];
  143. $sCabeceraTexto = "";
  144. $sAdjuntos = "";
  145. $sSeparador = uniqid("_Separador-de-datos_");
  146. $sCabeceras = "MIME-version: 1.0\n";
  147.  
  148. $header = 'From: ' .$Correo_electrónico . " \r\n";
  149. $header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
  150. $header .= "Mime-Version: 1.0 \r\n";
  151. $header .= "Content-Type: text/plain";
  152.  
  153.  
  154. $mensaje .= "DATOS PERSONALES \r\n". "\r\n";
  155.  
  156. $mensaje .= "Este mensaje fue enviado por : " . $Nombre." \r\n";  
  157. $mensaje .= "Edad Real : " . $Edad." \r\n";
  158. $mensaje .= "Telefono : " . $Telefono." \r\n";
  159. $mensaje .= "Nacionalidad : " . $Nacionalidad." \r\n";
  160. $mensaje .= "Su e-mail es : " . $Correo_electrónico."\r\n \r\n";
  161. $mensaje .= "Idiomas :". $Idiomas." \r\n \r\n";
  162.  
  163.  
  164. if ($_FILES["sAdjuntos"]["size"] > 0)
  165. {
  166. // Viene el fichero
  167.  
  168. // CABECERAS DEL MAIL (Sólo una vez, aunque vengan varios ficheros)
  169.  
  170. // Cabeceras generales del mail
  171. $sCabeceras .= "Content-type: multipart/mixed;";
  172. $sCabeceras .= "boundary=\"".$sSeparador."\"\n";
  173.                  
  174. // Cabeceras del texto
  175. $sCabeceraTexto = "--".$sSeparador."\n";
  176. $sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
  177. $sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n\n";
  178.                  
  179. $sCuerpo = $sCabeceraTexto.$mensaje;
  180.  
  181.  
  182. // SE GUARDA EL FICHERO (una vez por cada fichero)
  183.  
  184. $sAdjuntos .= "\n\n--".$sSeparador."\n";
  185. $sAdjuntos .= "Content-type: ".$_FILES["sAdjuntos"]["type"].";name=\"".$_FILES["sAdjuntos"]["name"]."\"\n";
  186. $sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
  187. $sAdjuntos .= "Content-disposition: attachment;filename=\"".$_FILES["sAdjuntos"]["name"]."\"\n\n";                  
  188.  
  189. $oFichero = fopen($_FILES["sAdjuntos"]["tmp_name"], 'rb');
  190. $sContenido = fread($oFichero, filesize($_FILES["sAdjuntos"]["tmp_name"]));
  191. $sAdjuntos .= chunk_split(base64_encode($sContenido));
  192. fclose($oFichero);
  193.  
  194. // SE AÑADE EL FICHERO
  195. $sCuerpo .= $sAdjuntos."\n\n--".$sSeparador."--\n";
  196.  
  197.  
  198. }
  199.  
  200. $para = '[email protected]@';
  201. $asunto = 'Registro Nuevo';
  202.  
  203. mail($para, $asunto, $sCuerpo , $header);
  204.  
  205.  
  206.  
  207. ?>
  #21 (permalink)  
Antiguo 10/01/2012, 07:54
 
Fecha de Ingreso: enero-2012
Ubicación: Barcelona
Mensajes: 71
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Archivos del servidor, al mail???

Que estoy seguro que mas de la mitad de las cosas que he puesto sobran, jejejejeje.
pero a funcionado por el momento, seguro que todo es mas sencillo pero por el momento asta que aprenda......
  #22 (permalink)  
Antiguo 10/01/2012, 08:39
Avatar de jercer  
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 20 años, 6 meses
Puntos: 13
Respuesta: Archivos del servidor, al mail???

Pues esto te debería funcionar, reemplazando uno de esos PHP:

Código PHP:
Ver original
  1. <?php
  2.  
  3. if (isset($_POST["action"]) && ($_POST["action"] == "upload")) {
  4.  
  5.   $Nombre = $_POST['nombre'];
  6.   $Edad = $_POST['edad'];
  7.   $Nacionalidad = $_POST['nacionalidad'];
  8.   $Telefono = $_POST['telefono'];
  9.   $Correo_electrónico = $_POST['correo'];
  10.   $Idiomas = $_POST['idiomas'];
  11.   $sCabeceraTexto = "";
  12.   $sAdjuntos = "";
  13.   $sSeparador = uniqid("_Separador-de-datos_");
  14.   $sCabeceras = "MIME-version: 1.0\n";
  15.    
  16.   $mensaje .= "DATOS PERSONALES \r\n". "\r\n";
  17.    
  18.   $mensaje .= "Este mensaje fue enviado por : " . $Nombre." \r\n";  
  19.   $mensaje .= "Edad Real : " . $Edad." \r\n";
  20.   $mensaje .= "Telefono : " . $Telefono." \r\n";
  21.   $mensaje .= "Nacionalidad : " . $Nacionalidad." \r\n";
  22.   $mensaje .= "Su e-mail es : " . $Correo_electrónico."\r\n \r\n";
  23.   $mensaje .= "Idiomas :". $Idiomas." \r\n \r\n";
  24.    
  25.    
  26.   if ($_FILES["archivo1"]["size"] > 0)
  27.   {
  28.   // Viene el fichero
  29.    
  30.   // CABECERAS DEL MAIL (Sólo una vez, aunque vengan varios ficheros)
  31.    
  32.   // Cabeceras generales del mail
  33.   $sCabeceras .= "Content-type: multipart/mixed;";
  34.   $sCabeceras .= "boundary=\"".$sSeparador."\"\n";
  35.                    
  36.   // Cabeceras del texto
  37.   $sCabeceraTexto = "--".$sSeparador."\n";
  38.   $sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
  39.   $sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n\n";
  40.                    
  41.   $sCuerpo = $sCabeceraTexto.$mensaje;
  42.    
  43.    
  44.   // SE GUARDA EL FICHERO (una vez por cada fichero)
  45.    
  46.   $sAdjuntos .= "\n\n--".$sSeparador."\n";
  47.   $sAdjuntos .= "Content-type: ".$_FILES["archivo1"]["type"].";name=\"".$_FILES["archivo1"]["name"]."\"\n";
  48.   $sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
  49.   $sAdjuntos .= "Content-disposition: attachment;filename=\"".$_FILES["archivo1"]["name"]."\"\n\n";                  
  50.    
  51.   $oFichero = fopen($_FILES["archivo1"]["tmp_name"], 'rb');
  52.   $sContenido = fread($oFichero, filesize($_FILES["archivo1"]["tmp_name"]));
  53.   $sAdjuntos .= chunk_split(base64_encode($sContenido));
  54.   fclose($oFichero);
  55.    
  56.   // SE AÑADE EL FICHERO
  57.   $sCuerpo .= $sAdjuntos."\n\n--".$sSeparador."--\n";
  58.    
  59.    
  60.   }
  61.    
  62.   $para = '[email protected]';
  63.   $asunto = 'Registro Nuevo';
  64.   $sCabeceras .= "From:".$Correo_electrónico."\n";
  65.    
  66.   if (mail($para, $asunto, $sCuerpo , $sCabeceras))
  67.     echo "Mensaje enviado";
  68.    
  69. }
  70. ?>



Con esto y todo lo anterior deberías ser capaz de poder terminar tu código sin problemas.

Ahora depende de ti.
  #23 (permalink)  
Antiguo 10/01/2012, 09:46
 
Fecha de Ingreso: enero-2012
Ubicación: Barcelona
Mensajes: 71
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Archivos del servidor, al mail???

No lo consigo
  #24 (permalink)  
Antiguo 10/01/2012, 10:01
Avatar de jercer  
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 20 años, 6 meses
Puntos: 13
Respuesta: Archivos del servidor, al mail???

Reemplaza el código que me pusiste desde la linea 134, por el código que yo te puse.

Debe recibir un fichero desde un campo llamado "archivo1".

Me basé en el formulario que pusiste en el primer post.

Cambia el email '[email protected]' por el tuyo.
  #25 (permalink)  
Antiguo 10/01/2012, 10:05
 
Fecha de Ingreso: enero-2012
Ubicación: Barcelona
Mensajes: 71
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Archivos del servidor, al mail???

Eso es lo que hice, pero cambie todos los campos llamados archivo1
por sAdjuntos como estaba en el primer ejemplo que pusiste, así mandaba todos los adjuntos como paso cuando a la hora de enviar mandaba los 2 mails
  #26 (permalink)  
Antiguo 10/01/2012, 10:10
 
Fecha de Ingreso: enero-2012
Ubicación: Barcelona
Mensajes: 71
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Archivos del servidor, al mail???

Lo deje de la siguiente manera:


Código PHP:
Ver original
  1. <?php
  2.     if ($gestor = opendir('files')) {
  3.         echo "<ul>";
  4.         while (false !== ($arch = readdir($gestor))) {
  5.            if ($arch != "." && $arch != "..") {
  6.                echo "<li><a href=\"files/".$arch."\" class=\"linkli\">".$arch."</a></li>\n";
  7.            }
  8.         }
  9.         closedir($gestor);
  10.         echo "</ul>";
  11.     }
  12.     ?>  </td>
  13.   </tr>
  14. </table>
  15. </body>
  16. </html>
  17.  
  18. <?php
  19. $status = "";
  20. if ($_POST["action"] == "upload") {
  21.     // obtenemos los datos del archivo
  22.     $tamano = $_FILES["archivo1"]['size'];
  23.     $tipo = $_FILES["archivo1"]['type'];
  24.     $archivo1 = $_FILES["archivo1"]['name'];
  25.     $prefijo = substr(md5(uniqid(rand())),0,6);
  26.    
  27.  
  28.     if ($archivo1 != "") {
  29.         // guardamos el archivo a la carpeta files
  30.         $destino =  "files/".$prefijo."_".$archivo1;
  31.         if (copy($_FILES['archivo1']['tmp_name'],$destino)) {
  32.             $status = "Archivo subido: <b>".$archivo1."</b>";
  33.         } else {
  34.             $status = "Error al subir el archivo";
  35.         }
  36.     } else {
  37.         $status = "Error al subir archivo";
  38.     }
  39. }
  40. ?>
  41. <?php
  42. $status = "";
  43. if ($_POST["action"] == "upload") {
  44.     // obtenemos los datos del archivo
  45.     $tamano = $_FILES["archivo2"]['size'];
  46.     $tipo = $_FILES["archivo2"]['type'];
  47.     $archivo2 = $_FILES["archivo2"]['name'];
  48.     $prefijo = substr(md5(uniqid(rand())),0,6);
  49.    
  50.  
  51.     if ($archivo2 != "") {
  52.         // guardamos el archivo a la carpeta files
  53.         $destino =  "files/".$prefijo."_".$archivo2;
  54.         if (copy($_FILES['archivo2']['tmp_name'],$destino)) {
  55.             $status = "Archivo subido: <b>".$archivo2."</b>";
  56.         } else {
  57.             $status = "Error al subir el archivo";
  58.         }
  59.     } else {
  60.         $status = "Error al subir archivo";
  61.     }
  62. }
  63. ?>
  64. <?php
  65. $status = "";
  66. if ($_POST["action"] == "upload") {
  67.     // obtenemos los datos del archivo
  68.     $tamano = $_FILES["archivo3"]['size'];
  69.     $tipo = $_FILES["archivo3"]['type'];
  70.     $archivo3 = $_FILES["archivo3"]['name'];
  71.     $prefijo = substr(md5(uniqid(rand())),0,6);
  72.    
  73.  
  74.     if ($archivo3 != "") {
  75.         // guardamos el archivo a la carpeta files
  76.         $destino =  "files/".$prefijo."_".$archivo3;
  77.         if (copy($_FILES['archivo3']['tmp_name'],$destino)) {
  78.             $status = "Archivo subido: <b>".$archivo3."</b>";
  79.         } else {
  80.             $status = "Error al subir el archivo";
  81.         }
  82.     } else {
  83.         $status = "Error al subir archivo";
  84.     }
  85. }
  86. ?>
  87. <?php
  88. $status = "";
  89. if ($_POST["action"] == "upload") {
  90.     // obtenemos los datos del archivo
  91.     $tamano = $_FILES["archivo4"]['size'];
  92.     $tipo = $_FILES["archivo4"]['type'];
  93.     $archivo4 = $_FILES["archivo4"]['name'];
  94.     $prefijo = substr(md5(uniqid(rand())),0,6);
  95.    
  96.  
  97.     if ($archivo4 != "") {
  98.         // guardamos el archivo a la carpeta files
  99.         $destino =  "files/".$prefijo."_".$archivo4;
  100.         if (copy($_FILES['archivo4']['tmp_name'],$destino)) {
  101.             $status = "Archivo subido: <b>".$archivo4."</b>";
  102.         } else {
  103.             $status = "Error al subir el archivo";
  104.         }
  105.     } else {
  106.         $status = "Error al subir archivo";
  107.     }
  108. }
  109. ?>
  110. <?php
  111. $status = "";
  112. if ($_POST["action"] == "upload") {
  113.     // obtenemos los datos del archivo
  114.     $tamano = $_FILES["archivo5"]['size'];
  115.     $tipo = $_FILES["archivo5"]['type'];
  116.     $archivo5 = $_FILES["archivo5"]['name'];
  117.     $prefijo = substr(md5(uniqid(rand())),0,6);
  118.    
  119.  
  120.     if ($archivo5 != "") {
  121.         // guardamos el archivo a la carpeta files
  122.         $destino =  "files/".$prefijo."_".$archivo5;
  123.         if (copy($_FILES['archivo5']['tmp_name'],$destino)) {
  124.             $status = "Archivo subido: <b>".$archivo5."</b>";
  125.         } else {
  126.             $status = "Error al subir el archivo";
  127.         }
  128.     } else {
  129.         $status = "Error al subir archivo";
  130.     }
  131. }
  132. ?>
  133.  
  134. <?php
  135.              
  136. if (isset($_POST["action"]) && ($_POST["action"] == "upload")) {
  137.  
  138. $Nombre = $_POST['nombre'];
  139. $Edad = $_POST['edad'];
  140. $Nacionalidad = $_POST['nacionalidad'];
  141. $Telefono = $_POST['telefono'];
  142. $Correo_electrónico = $_POST['correo'];
  143. $Idiomas = $_POST['idiomas'];
  144. $sCabeceraTexto = "";
  145. $sAdjuntos = "";
  146. $sSeparador = uniqid("_Separador-de-datos_");
  147. $sCabeceras = "MIME-version: 1.0\n";
  148.  
  149.  
  150.  
  151. $mensaje .= "DATOS PERSONALES \r\n". "\r\n";
  152.  
  153. $mensaje .= "Este mensaje fue enviado por : " . $Nombre." \r\n";  
  154. $mensaje .= "Edad Real : " . $Edad." \r\n";
  155. $mensaje .= "Telefono : " . $Telefono." \r\n";
  156. $mensaje .= "Nacionalidad : " . $Nacionalidad." \r\n";
  157. $mensaje .= "Su e-mail es : " . $Correo_electrónico."\r\n \r\n";
  158. $mensaje .= "Idiomas :". $Idiomas." \r\n \r\n";
  159.  
  160. $sCuerpo = $sCabeceraTexto.$mensaje;
  161.                 }
  162.                
  163. if ($_FILES["sAdjuntos"]["size"] > 0)
  164.   {
  165.   // Viene el fichero
  166.    
  167.   // CABECERAS DEL MAIL (Sólo una vez, aunque vengan varios ficheros)
  168.    
  169.   // Cabeceras generales del mail
  170.   $sCabeceras .= "Content-type: multipart/mixed;";
  171.   $sCabeceras .= "boundary=\"".$sSeparador."\"\n";
  172.                    
  173.   // Cabeceras del texto
  174.   $sCabeceraTexto = "--".$sSeparador."\n";
  175.   $sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
  176.   $sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n\n";
  177.                    
  178.    
  179.     // SE GUARDA EL FICHERO (una vez por cada fichero)
  180.    
  181.   $sAdjuntos .= "\n\n--".$sSeparador."\n";
  182.   $sAdjuntos .= "Content-type: ".$_FILES["sAdjuntos"]["type"].";name=\"".$_FILES["sAdjuntos"]["name"]."\"\n";
  183.   $sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
  184.   $sAdjuntos .= "Content-disposition: attachment;filename=\"".$_FILES["sAdjuntos"]["name"]."\"\n\n";                  
  185.    
  186.   $oFichero = fopen($_FILES["sAdjuntos"]["tmp_name"], 'rb');
  187.   $sContenido = fread($oFichero, filesize($_FILES["sAdjuntos"]["tmp_name"]));
  188.   $sAdjuntos .= chunk_split(base64_encode($sContenido));
  189.   fclose($oFichero);
  190.    
  191.   // SE AÑADE EL FICHERO
  192.   $sCuerpo .= $sAdjuntos."\n\n--".$sSeparador."--\n";
  193.    
  194.    
  195.   }
  196.   {
  197.   $para = '[email protected]';
  198.   $asunto = 'Registro Nuevo';
  199.   $sCabeceras .= "From:".$Correo_electrónico."\n";
  200.  
  201.  if (mail($para, $asunto, $sCuerpo , $sCabeceras))
  202.      echo "Mensaje enviado";
  203.  }  
  204.  
  205. ?>
  #27 (permalink)  
Antiguo 10/01/2012, 10:23
Avatar de jercer  
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 20 años, 6 meses
Puntos: 13
Respuesta: Archivos del servidor, al mail???

OK, pues:

Reemplaza $_FILES["archivo1"] por $_FILES["sAdjuntos"]

O:

Reemplaza en tu formulario sAdjuntos por archivo1



De todas formas, volviendo al origen, el primer código (mensaje 3) envia todos los ficheros pasados INDEPENDIENTEMENTE DE SU NOMBRE.

El código del mensaje 22 Envia un sólo fichero de un campo llamado "archivo1"




Creo que nos hemos metido en un jardin. Volvamos al principio.

a - Elimina todo el código PHP.
b - copia el código del principio (mensaje 3)

c - Reemplaza:

Código PHP:
Ver original
  1. //Ejemplo de como usar:
  2.         if (form_mail("[email protected]",
  3.                                     "Activación de formulario",
  4.                                     "Los datos introducidos en el formulario son:\n",
  5.                                     "[email protected]"))
  6.         echo "Su formulario ha sido enviado con exito";

Por:

Código PHP:
Ver original
  1. if (isset($_POST["action"]) && ($_POST["action"] == "upload")) {
  2.         //Ejemplo de como usar:
  3.         if (form_mail("[email protected]",
  4.                                     "Activación de formulario",
  5.                                     "Los datos introducidos en el formulario son:\n",
  6.                                     "[email protected]"))
  7.         echo "Su formulario ha sido enviado con exito";
  8. }

y

Código PHP:
Ver original
  1. // Recogemos los campos del formulario
  2.         foreach ($_POST as $sNombre => $sValor)
  3.             $sCuerpo = $sCuerpo."\n".$sNombre." = ".$sValor;

Por:

Código PHP:
Ver original
  1. $mensaje = "DATOS PERSONALES \r\n". "\r\n";
  2.  
  3. $mensaje .= "Este mensaje fue enviado por : " . $Nombre." \r\n";  
  4. $mensaje .= "Edad Real : " . $Edad." \r\n";
  5. $mensaje .= "Telefono : " . $Telefono." \r\n";
  6. $mensaje .= "Nacionalidad : " . $Nacionalidad." \r\n";
  7. $mensaje .= "Su e-mail es : " . $Correo_electrónico."\r\n \r\n";
  8. $mensaje .= "Idiomas :". $Idiomas." \r\n \r\n";
  9. $sCuerpo = $mensaje;

Esto debería hacer exactamente lo que tu quieres. ¿Es así?

He editado la linea:
$sCuerpo = $mensaje;
(Faltaba el dolar)
  #28 (permalink)  
Antiguo 10/01/2012, 13:08
 
Fecha de Ingreso: enero-2012
Ubicación: Barcelona
Mensajes: 71
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Archivos del servidor, al mail???

Lo deje así, ahora manda el archivo, pero no manda los datos del formulario

Código PHP:
<?php 
    
if ($gestor opendir('files')) {
        echo 
"<ul>";
        while (
false !== ($arch readdir($gestor))) {
           if (
$arch != "." && $arch != "..") {
               echo 
"<li><a href=\"files/".$arch."\" class=\"linkli\">".$arch."</a></li>\n";
           }
        }
        
closedir($gestor);
        echo 
"</ul>";
    }
    
?>    </td>
  </tr>
</table>
</body>
</html>

<?php 
$status 
"";
if (
$_POST["action"] == "upload") {
    
// obtenemos los datos del archivo 
    
$tamano $_FILES["archivo1"]['size'];
    
$tipo $_FILES["archivo1"]['type'];
    
$archivo1 $_FILES["archivo1"]['name'];
    
$prefijo substr(md5(uniqid(rand())),0,6);
    

    if (
$archivo1 != "") {
        
// guardamos el archivo a la carpeta files
        
$destino =  "files/".$prefijo."_".$archivo1;
        if (
copy($_FILES['archivo1']['tmp_name'],$destino)) {
            
$status "Archivo subido: <b>".$archivo1."</b>";
        } else {
            
$status "Error al subir el archivo";
        }
    } else {
        
$status "Error al subir archivo";
    }
}
?>
<?php 
$status 
"";
if (
$_POST["action"] == "upload") {
    
// obtenemos los datos del archivo 
    
$tamano $_FILES["archivo2"]['size'];
    
$tipo $_FILES["archivo2"]['type'];
    
$archivo2 $_FILES["archivo2"]['name'];
    
$prefijo substr(md5(uniqid(rand())),0,6);
    

    if (
$archivo2 != "") {
        
// guardamos el archivo a la carpeta files
        
$destino =  "files/".$prefijo."_".$archivo2;
        if (
copy($_FILES['archivo2']['tmp_name'],$destino)) {
            
$status "Archivo subido: <b>".$archivo2."</b>";
        } else {
            
$status "Error al subir el archivo";
        }
    } else {
        
$status "Error al subir archivo";
    }
}
?>
<?php 
$status 
"";
if (
$_POST["action"] == "upload") {
    
// obtenemos los datos del archivo 
    
$tamano $_FILES["archivo3"]['size'];
    
$tipo $_FILES["archivo3"]['type'];
    
$archivo3 $_FILES["archivo3"]['name'];
    
$prefijo substr(md5(uniqid(rand())),0,6);
    

    if (
$archivo3 != "") {
        
// guardamos el archivo a la carpeta files
        
$destino =  "files/".$prefijo."_".$archivo3;
        if (
copy($_FILES['archivo3']['tmp_name'],$destino)) {
            
$status "Archivo subido: <b>".$archivo3."</b>";
        } else {
            
$status "Error al subir el archivo";
        }
    } else {
        
$status "Error al subir archivo";
    }
}
?>
<?php 
$status 
"";
if (
$_POST["action"] == "upload") {
    
// obtenemos los datos del archivo 
    
$tamano $_FILES["archivo4"]['size'];
    
$tipo $_FILES["archivo4"]['type'];
    
$archivo4 $_FILES["archivo4"]['name'];
    
$prefijo substr(md5(uniqid(rand())),0,6);
    

    if (
$archivo4 != "") {
        
// guardamos el archivo a la carpeta files
        
$destino =  "files/".$prefijo."_".$archivo4;
        if (
copy($_FILES['archivo4']['tmp_name'],$destino)) {
            
$status "Archivo subido: <b>".$archivo4."</b>";
        } else {
            
$status "Error al subir el archivo";
        }
    } else {
        
$status "Error al subir archivo";
    }
}
?>
<?php 
$status 
"";
if (
$_POST["action"] == "upload") {
    
// obtenemos los datos del archivo 
    
$tamano $_FILES["archivo5"]['size'];
    
$tipo $_FILES["archivo5"]['type'];
    
$archivo5 $_FILES["archivo5"]['name'];
    
$prefijo substr(md5(uniqid(rand())),0,6);
    

    if (
$archivo5 != "") {
        
// guardamos el archivo a la carpeta files
        
$destino =  "files/".$prefijo."_".$archivo5;
        if (
copy($_FILES['archivo5']['tmp_name'],$destino)) {
            
$status "Archivo subido: <b>".$archivo5."</b>";
        } else {
            
$status "Error al subir el archivo";
        }
    } else {
        
$status "Error al subir archivo";
    }
}
?>

<?php 
             


$Nombre 
$_POST['nombre']; 
$Edad $_POST['edad']; 
$Nacionalidad $_POST['nacionalidad']; 
$Telefono $_POST['telefono']; 
$Correo_electrónico $_POST['correo']; 
$Idiomas $_POST['idiomas'];


$mensaje .= "DATOS PERSONALES \r\n""\r\n";

$mensaje .= "Este mensaje fue enviado por : " $Nombre." \r\n";  
$mensaje .= "Edad Real : " $Edad." \r\n";
$mensaje .= "Telefono : " $Telefono." \r\n";
$mensaje .= "Nacionalidad : " $Nacionalidad." \r\n";
$mensaje .= "Su e-mail es : " $Correo_electrónico."\r\n \r\n";
$mensaje .= "Idiomas :"$Idiomas." \r\n \r\n"

$sCuerpo $sCabeceraTexto.$mensaje;

  
$para '[email protected]'
  
$asunto 'Registro Nuevo'


?>
<?php 

    
function form_mail($sPara$sAsunto$sTexto$Correo_electrónico
    { 
     
        
$bHayFicheros 0
        
$sCabeceraTexto ""
        
$sAdjuntos ""
        
$sCuerpo $sTexto
        
$sSeparador uniqid("_Separador-de-datos_"); 
         
        
$sCabeceras "MIME-version: 1.0\n"
         
        
// Recogemos los campos del formulario 
        
foreach ($_POST as $sNombre => $sValor
            
$sCuerpo $sCuerpo."\n".$sNombre." = ".$sValor
             
        
// Recorremos los Ficheros 
        
foreach ($_FILES as $vAdjunto
        { 
             
            if (
$bHayFicheros == 0
            { 
                 
                
// Hay ficheros 
                 
                
$bHayFicheros 1
                 
                
// Cabeceras generales del mail 
                
$sCabeceras .= "Content-type: multipart/mixed;"
                
$sCabeceras .= "boundary=\"".$sSeparador."\"\n"
                 
                
// Cabeceras del texto 
                
$sCabeceraTexto "--".$sSeparador."\n"
                
$sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n"
                
$sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n\n"
                 
                
                 
            } 
             
            
// Se añade el fichero 
            
if ($vAdjunto["size"] > 0
            { 
                
$sAdjuntos .= "\n\n--".$sSeparador."\n"
                
$sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n"
                
$sAdjuntos .= "Content-Transfer-Encoding: BASE64\n"
                
$sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";                  
                 
                
$oFichero fopen($vAdjunto["tmp_name"], 'rb'); 
                
$sContenido fread($oFicherofilesize($vAdjunto["tmp_name"])); 
                
$sAdjuntos .= chunk_split(base64_encode($sContenido)); 
                
fclose($oFichero); 
            } 
             
        } 
         
        
// Si hay ficheros se añaden al cuerpo 
        
if ($bHayFicheros
            
$sCuerpo .= $sAdjuntos."\n\n--".$sSeparador."--\n"
         
        
// Se añade la cabecera de destinatario 
        
if ($sDe)$sCabeceras .= "From:".$Correo_electrónico."\n"
         
        
// Por último se envia el mail 
        
return(mail($sPara$sAsunto$sCuerpo$sCabeceras)); 
    } 

if (isset(
$_POST["action"]) && ($_POST["action"] == "upload")) {
        
//Ejemplo de como usar: 
        
if (form_mail("[email protected]"
                                    
"Activación de formulario"
                                    
"Los datos introducidos en el formulario son:\n"
                                    
"[email protected]")) 
        echo 
""
}
 

  

?>
  #29 (permalink)  
Antiguo 10/01/2012, 16:52
 
Fecha de Ingreso: enero-2012
Ubicación: Barcelona
Mensajes: 71
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Archivos del servidor, al mail???

Perfecto, lo estudie todo desde el principio y ya esta conseguido.
bieeeeennnnn

Pero, siempre existe un pero, jajajajaja

en botón de enviar no me funciona en algunos navegadores.

IE= aparecen, pero al apretar en ambos no reaccionan, ni envían ni borran
Opera= aparecen, pero al apretar en ambos no reaccionan, ni envían ni borran
FireFoz= no aparecen los botones enviar y borrar

Eso porque puede ser?
  #30 (permalink)  
Antiguo 12/01/2012, 14:00
 
Fecha de Ingreso: enero-2012
Ubicación: Barcelona
Mensajes: 71
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Archivos del servidor, al mail???

Hola, todo el tema de envío de archivos solucionado, el aspecto visual también, funcionando en todos los navegadores, pero a la hora de probarlo me di cuenta que usando 2 pcs distintos y en distintos navegadores después de enviar el formulario se ven en la parte superior izquierda los archivos que se enviaron desde el otro pc, pinchando en el nombre se abre la imagen enviada

Eso a que es devido??

Etiquetas: formulario, html, registro, servidor
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 19:23.