Foros del Web » Programando para Internet » PHP »

Upload de datos y aviso mediante email.

Estas en el tema de Upload de datos y aviso mediante email. en el foro de PHP en Foros del Web. Hola, Estoy creando un sistema de upload de archivos (que seran grandes, ahora estoy probando con imagenes) y que basicamente cuando termina de subir el ...
  #1 (permalink)  
Antiguo 24/03/2006, 16:39
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
Upload de datos y aviso mediante email.

Hola,

Estoy creando un sistema de upload de archivos (que seran grandes, ahora estoy probando con imagenes) y que basicamente cuando termina de subir el archivo correctamente me envia un email.

Le he dado mil vueltas y una variable no pasa.... no se por que, no le encuentro el fallo.

El script es este:
Código PHP:
<?php
  $userfile
=$_FILES['userfile']['tmp_name']; 
  
$userfile_name=$_FILES['userfile']['name'];
  
$userfile_size=$_FILES['userfile']['size'];
  
$userfile_type=$_FILES['userfile']['type'];
  
$userfile_error=$_FILES['userfile']['error'];
  
$usuario=$_POST['usuario'];
  
$email=$_POST['email'];
  
$destinatario '[email protected]';
  
$asunto 'Test de upload de datos y envio de email de aviso';
  
$contenidoemail 'El usuario: '.$usuario."\n"
                 
.'Con email: '.$email."\n"
                 
.'ha subido este archivo: http://www.mindpanic.com/datos/'.$userfile_name."\n";
  
$remitente 'De: [email protected]';
  if (!
$usuario)
  {
      echo 
"".$usuario." No has introducido el nombre de usuario.<br />";
      echo 
"Por favor vuelve atras y rellena todas las casillas.";
      exit;
  }
  if (!
$email)
  {
      echo 
"".$usuario." No has introducido el email.<br />";
      echo 
"Por favor vuelve atras y rellena todas las casillas.";
      exit;
  }
  if (
$userfile_error 0)
  {
    echo 
'Problema: ';
    switch (
$userfile_error)
    {
      case 
1:  echo 'El archivo excede el: upload_max_filesize';  break;
      case 
2:  echo 'El archivo excede el: max_file_size';  break;
      case 
3:  echo 'El arcivo no se ha subido al completo';  break;
      case 
4:  echo 'No file uploaded';  break;
    }
    exit;
  }
// otro checkeo más: tiene el archivo el tipo MIME correcto?
  
$userfile_type_aceptados=array('image/jpeg','image/jpg','image/gif','image/png');
  if (!
in_array($userfile_type,$userfile_type_aceptados))
  {
      echo 
'Problema: El archivo no tiene el formato adecuado (jpeg, jpg, gif o png)';
      exit;
  } 

// pon el archivo donde quieras
  
$upfile '/home/mindpani/public_html/datos/'.$userfile_name;

// is_uploaded_file y move_uploaded_file añadido para la version 4.0.3 de php
  
if (is_uploaded_file($userfile)) 
  {
     if (!
move_uploaded_file($userfile$upfile))
     {
         
unlink($upfile);
         echo 
'Problema: No se ha podido mover el archivo a el directorio de destino';
         exit;
     }
  } 
  else 
  {
      
unlink($upfile);
      echo 
'Problema: Posible ataque en el upload. Archivo: '.$userfile_name;
      exit;
  }
  if (!
mail($destinatario$asunto$contenidoemail$remitente))
  {
      echo 
"Ha fallado el envio del email";
  }
  echo 
"Los datos se han enviado correctamente y se te ha enviado el email";
?>
Y el formulario este:
Código PHP:
<?php $volver "../artistas/subir-datos.php";
define('IN_PHPBB'true);
$phpbb_root_path = (dirname($_SERVER['PHP_SELF'])=="../foros/") ? './' '../foros/'//PATH DEL FORO RESPECTO DEL SCRIPT
if (!function_exists("init_userprefs"))
{
include(
$phpbb_root_path 'extension.inc');
include(
$phpbb_root_path 'common.'.$phpEx);
$userdata session_pagestart($user_ipPAGE_INDEX);
init_userprefs($userdata);
global 
$db$board_config;
global 
$HTTP_COOKIE_VARS$HTTP_GET_VARS$SID;
$cookiename $board_config['cookie_name'];
$cookiepath $board_config['cookie_path'];
$cookiedomain $board_config['cookie_domain'];
$cookiesecure $board_config['cookie_secure'];
}
?>
<html>
<head>
  <title>Test para subida de datos</title>
</head>
<body>
  <h2>Hola <?php echo"".$userdata['username']."";?>, sigue estos pasos</h2>
  <h2>ESto es un test, Introduce correctamente los datos</h2>
  <form enctype='multipart/form-data' action='upload.php' method='post'>
        <input type='hidden' name='usuario' value='<?php echo"".$userdata['username']."";?>'>
        <input type='hidden' name='MAX_FILE_SIZE' value='41943040'>
        Subir este Archivo: <input name='userfile' type='file'>
     <table border='0'>
      <tr>
        <td>Direccion de correo electronico</td>
         <td><input type='text' name='email' maxlength='30' size='30'></td>
      </tr>
      <tr>
        <td colspan='2'><input type='submit' value='Enviar Datos'></td>
      </tr>
    </table>
  </form>
</body>
</html>
Podeis probarlo aqui: http://www.mindpanic.com/colabora/subir-tracks.php

Saludos.

Se me olvidaba el script se para en el fallo que dice que no he introducido el email.

probarlo y poner un email inexistente.

Última edición por MindPaniC; 24/03/2006 a las 19:38
  #2 (permalink)  
Antiguo 24/03/2006, 17:20
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
SOLUCIONADO.....

siempre me pasa lo mismo... errores tontos y pequeños.
  #3 (permalink)  
Antiguo 24/03/2006, 18:34
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
mmm por cierto, si quiero enviar dos mails pero con diferente contendido y a diferentes direcciones como seria:

Código PHP:
<?php
if (!mail($destinatario$asunto$contenidoemail$remitente) || !mail($destinatario2$asunto2$contenidoemail2$remitente))
  {
      echo 
"Ha fallado el envio del email";
  }
  echo 
"Los datos se han enviado correctamente y se te ha enviado el email";
?>
¿¿funcionaria de esa manera?? despues del proceso me refiero

saludos
  #4 (permalink)  
Antiguo 24/03/2006, 18:45
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
Pues si, si que ha funcionado de esa manera que puse.

menudo monologo que me he montado yo solo. jajajaja

saludos
  #5 (permalink)  
Antiguo 24/03/2006, 18:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por MindPaniC
Pues si, si que ha funcionado de esa manera que puse.

menudo monologo que me he montado yo solo. jajajaja

saludos
Igual está bien los aportes de código y comentarios .. siempre son buenos, pero .. tambien intenta no ser tan impulsivo, si ya te conoces que tienes errores según tu "tontos" .. eso es lo primero que debes revisar siempre.

Acuerdate también que cuando expongas un tema y le des solución ... intenta (por el bien de la comunidad) explicar concretamente cual era tu problema .. por muy "tonto" que sea, a alguien le podría ayudar a futuro a resolver su problema.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 24/03/2006, 19:23
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
Muy cierto cluster soy muy impulsivo... no sabes cuanto, en mas de una ocasión me he metido en lios por eso.

Bueno ahora mi aporte para la comunidad, he terminado y pulido el codigo lo máximo que mis conocimientos abarcan y bueno lo dejo aqui por si interesa para las FAQ's o para cualquier usuario que localize este hilo.

Sirve para subir archivos al servidor y ademas cuando termina de subirlos envia mails con la ruta del archivo a el webmaster y al usuario.

para pasar el nombre del usuario yo la cojo de los foros phpBB, pero tu puedes montartelo como quieras

le he puesto explicaciones y todo

Código PHP:
<?php

//////////////////////////////
// VARIABLES DEL FORMULARIO //
//////////////////////////////
  
  
$userfile=$_FILES['userfile']['tmp_name']; 
  
$userfile_name=$_FILES['userfile']['name'];
  
$userfile_size=$_FILES['userfile']['size'];
  
$userfile_type=$_FILES['userfile']['type'];
  
$userfile_error=$_FILES['userfile']['error'];
  
$usuario=$_POST['usuario'];
  
$email=$_POST['email'];

///////////////////////////////////
// VARIABLES DEL ENVIO DE EMAILS //
///////////////////////////////////
  
// DESTINATARIO 1: EL WEBMASTER EN ESTE CASO

  
$destinatario '[email protected]';
  
$asunto 'Nuevos datos subidos!! Revisalos ya!!';
  
$contenidoemail 'El usuario: '.$usuario."\n"
                 
.'Con esta direccion de email: '.$email."\n"
                 
.'Ha subido este archivo para revisión: http://www.tuweb.com/ruta_a_el/archivo/'.$userfile_name."\n";
  
$remitente 'From: tu nombre o nombre de tu web';

// DESTINATARIO 2: EL USUARIO QUE HA ENVIADO EL ARCHIVO
// Es una buena manera de dejarle claro que el archivo se ha subido correctamente
  
  
$destinatario2 ''.$email.'';
  
$asunto2 'Archivo recibido correctamente';
  
$contenidoemail2 'Hola '.$usuario."!!\n"
                 
.'bla bla: '.$email."\n"
                 
.'El archivo ha sido enviado correctamente, muchas gracias por tu colaboracion: http://www.tuweb.com/ruta_a_el/archivo/'.$userfile_name."\n";
  
$remitente2 'From: tu nombre o nombre de tu web';

////////////////////////////////////////////////////////////////////////////
// COMPROBAMOS QUE EL USUARIO HA RELLENADO TODOS LOS DATOS DEL FORMULARIO //
////////////////////////////////////////////////////////////////////////////

// AQUI PASA EL USUARIO

  
if (!$usuario)
  {
      echo 
"".$usuario." No has introducido el nombre de usuario.<br />";
      echo 
"Por favor vuelve atras y rellena todas las casillas.";
      exit;
  }

// AQUI PASA LA DIRECCION DE EMAIL

  
if (!$email)
  {
      echo 
"".$usuario." No has introducido el email.<br />";
      echo 
"Por favor vuelve atras y rellena todas las casillas.";
      exit;
  }

// AQUI PASA EL ARCHIVO

if (!$userfile)
  {
      echo 
"".$usuario." No has seleccionado ningún archivo.<br />";
      echo 
"Por favor vuelve atras y rellena todas las casillas.";
      exit;
  }

// AQUI COMPRUEBA VARIAS CUESTIONES

  
if ($userfile_error 0)
  {
    echo 
'Problema: ';
    switch (
$userfile_error)
    {
      case 
1:  echo 'El archivo excede el: upload_max_filesize';  break;
      case 
2:  echo 'El archivo excede el: max_file_size';  break;
      case 
3:  echo 'El arcivo no se ha subido al completo';  break;
      case 
4:  echo 'No file uploaded';  break;
    }
    exit;
  }

//////////////////////////////////////////////////
// COMPROBAMOS QUE LOS TIPOS MIME SON CORRECTOS //
//////////////////////////////////////////////////

  
$userfile_type_aceptados=array('application/rar','application/zip');
  if (!
in_array($userfile_type,$userfile_type_aceptados))
  {
      echo 
'El archivo no tiene el formato adecuado (zip o rar).';
      echo 
'Recuerda que debe ser un archivo comprimido en uno de esos dos formatos.';
      exit;
  } 

/////////////////////////////////////////////////////////
// AHORA MOVEMOS EL ARCHIVO A LA UBICACION QUE QUIERAS //
// RECUERDA QUE SON RUTAS ABSOLUTAS                    //
/////////////////////////////////////////////////////////

  
$upfile '/home/tu/ruta/absoluta/a/la/carpeta/que/quieras/'.$userfile_name;

// COMPROBAMOS QUE NO SE INTENTA SUBIR DOS VECES EL MISMO ARCHIVO

  
if (file_exists($upfile))
  {
      echo 
'El archivo ya existe en el servidor';
      echo 
'no puedes subir el mismo arhivo 2 veces';
      exit;
  }

// COMPROBAMOS QUE SE HA MOVIDO CORRECTAMENTE AÑADIDO PARA LA VERSION 4.0.3 de php

  
if (is_uploaded_file($userfile)) 
  {
     if (!
move_uploaded_file($userfile$upfile))
     {
         echo 
'Problema: No se ha podido mover el archivo a el directorio de destino';
         exit;
     }
  } 
  else 
  {
      
unlink($upfile);
      echo 
'Problema: Posible ataque en el upload del Archivo: '.$userfile_name;
      exit;
  }

///////////////////////////////////////////////////
// AHORA ENVIAMOS LOS EMAILS A SUS DESTINATARIOS //
///////////////////////////////////////////////////

  
if (!mail($destinatario$asunto$contenidoemail$remitente) || !mail($destinatario2$asunto2$contenidoemail2$remitente2))
  {
      echo 
"Ha fallado el envio del email";
  }
  echo 
"Los datos se han enviado correctamente y se te ha enviado el email";
?>
Que os parece?? ¿esta bien?

Última edición por MindPaniC; 24/03/2006 a las 20:12
  #7 (permalink)  
Antiguo 24/03/2006, 19:40
Avatar de atak  
Fecha de Ingreso: julio-2005
Ubicación: Huancayo
Mensajes: 490
Antigüedad: 18 años, 9 meses
Puntos: 5
De acuerdo Posteando

Hola MindPaniC

Cita:
Felicitaciones por tu aporte, vi muchos post preguntando por los famosos "upload's" creo que con tu post quedarán claros algunos aspectos de Script.
Salu2 y sigue asi



__________________
. .: El mejor Inicio :. .
  #8 (permalink)  
Antiguo 24/03/2006, 19:48
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
Muchas gracias!!

En parte de este script le debo las gracias a Cluster ya que es parte de un script que cree otra vez para hacer upload y ademas guardar datos en mysql, en el cual me ayudo él. Ahora lo he reutilizado de esta manera.

La verdad es que cada dia me gusta mas php, pero aún soy muy novato y lo que hago es básicamente reutilizar codigo y amoldarlo a mi gusto.

saludos
  #9 (permalink)  
Antiguo 24/03/2006, 20:13
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
Script actualizado...

Me acabo de dar cuenta de que no comprobaba si el archivo ya existia en el servidor. ya he implementado en el script la comprobacion, esta testeada y funciona perfectamente.

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




La zona horaria es GMT -6. Ahora son las 16:56.