Inicio arrow Notas y Artículos arrow Descargas con PHP
Menú Principal
Escrito por Ricardo Lejovitzky   
Páginas:
Descarga de Archivos con PHP
El Script

El Script

Para descargar .htaccess y descargas.php bajar este archivo.

Solo es requerido modificar las primeras 3 líneas ($logFile, $downPath y timezone).

El resto de las líneas se pueden modificar para agregarle alguna funcionalidad adicional como la conexión a base de datos, efectuar validaciones o para modificar el comportamiento del Log.

Luego de la modificación de descargas.php, lo guardamos y copiamos al mismo directorio en que se encuentra .htaccess.

span style="color: #808080; font-style: italic;">// Modificar: Ubicación del archivo Log donde se guardaran
// los detalles de transferencia.
'/home/usuario/logs/archivos.txt';
 
// Modificar: Ubicación del directorio donde se encuentran
// físicamente los archivos.
'/home/usuario/archivos';
 
// Modificar: Ajusta las fechas en Log a la zona especificada.
'America/Argentina/Buenos_Aires');
 
// Inicio del Script: Para calcular la duración total
// de la transferencia.
// Obtiene un parametro o retorna cadena vacia.
'';
}
 
// Soporte de Cache: Retorna true si el recurso no fue modificado.
'HTTP_IF_MODIFIED_SINCE''HTTP_IF_MODIFIED_SINCE''HTTP_IF_NONE_MATCH''"', '''HTTP_IF_NONE_MATCH'// Escribe una entrada en el Log.
// Este script solo guarda una entrada al salir
// por lo que no es necesario cerrar el handle.
'[%d-%b-%Y %T]''ab'' ' . $texto);
}
 
// Desactiva magic quotes.
// Agente de usuario (explorador).
'HTTP_USER_AGENT');
 
// Referencia (Página web de procedencia).
'HTTP_REFERER');
 
// IP del visitante.
'REMOTE_ADDR'];
 
// Obtiene el nombre de archivo y verifica su existencia.
// Si el archivo no se encuentra, envia un error 404
// y reporta en Log.
'REQUEST_URI'"$displayname:\nAgente: $agente".
"\nReferencia: $referer\nIP $ip - ".
"RESPUESTA 404 (No encontrado).\n\n"'HTTP/1.0 404 No encontrado'/*
 
Aquí podemos efectuar validaciones previas a enviar el archivo.
 
Por ejemplo: Podemos verificar si la consulta proviene o no
de nuestro Sitio Web ($referer), si proviene de algún spider
o robot ($agente) o si la IP cliente se encuentra en una
lista de exclusión ($ip).
 
También aquí podemos descartar algún archivo o extensión del
repositorio que no debe enviarse. Recordemos que si en el
repositorio de archivos hubiera algún script, este será
enviado textualmente sin ejecutar.
 
Si para rechazar la transferencia basta con agregar estas líneas:
 
writeLog("$displayname:\nAgente: $agente\nReferencia: $referer".
"\nIP $ip - $len bytes - RESPUESTA 403 (No autorizado).\n\n");
header('HTTP/1.1 403 No autorizado');
exit;
 
*/
 
// Fecha de archivo (para la validación de Cache y para enviar
// en encabezado).
'D, d M Y H:i:s'' GMT';
 
// Seudo ETag: Genera un Hash MD5 del nombre de archivo,
// tamaño y fecha.
// Si el cliente solicita verificar el cache y la validacion
// es positiva, enviamos una respuesta 304 y salimos del script.
"$displayname:\nAgente: $agente".
"\nReferencia: $referer\nIP $ip - $len bytes - ".
"RESPUESTA 304 (No modificado).\n\n"'HTTP/1.1 304 No modificado'// Intento de apertura del archivo.
// Si no podemos abrirlo enviamos un error 500.
'rb'"$displayname:\nAgente: $agente\nReferencia: $referer".
"\nIP $ip - $len bytes - RESPUESTA 500 (Error de servidor).\n\n"'HTTP/1.1 500 Error de servidor'// Content-Type de acuerdo a la extensión.
'.''application/force-download''ez': $ctype='application/andrew-inset''atom': $ctype='application/atom+xml''hqx': $ctype='application/mac-binhex40''cpt': $ctype='application/mac-compactpro''mathml': $ctype='application/mathml+xml''doc': $ctype='application/msword''bin''class''dll''dmg''dms''exe''lha''lzh''rar''so': $ctype='application/octet-stream''oda': $ctype='application/oda''ogg': $ctype='application/ogg''pdf': $ctype='application/pdf''ai''eps''ps': $ctype='application/postscript''rdf': $ctype='application/rdf+xml''smi''smil': $ctype='application/smil''grxml': $ctype='application/srgs+xml''gram': $ctype='application/srgs''mif': $ctype='application/vnd.mif''xul': $ctype='application/vnd.mozilla.xul+xml''xls': $ctype='application/vnd.ms-excel''ppt': $ctype='application/vnd.ms-powerpoint''rm': $ctype='application/vnd.rn-realmedia''wbxml': $ctype='application/vnd.wap.wbxml''wmlc': $ctype='application/vnd.wap.wmlc''wmlsc': $ctype='application/vnd.wap.wmlscriptc''vxml': $ctype='application/voicexml+xml''bcpio': $ctype='application/x-bcpio''vcd': $ctype='application/x-cdlink''pgn': $ctype='application/x-chess-pgn''cpio': $ctype='application/x-cpio''csh': $ctype='application/x-csh''dcr''dir''dxr': $ctype='application/x-director''dvi': $ctype='application/x-dvi''spl': $ctype='application/x-futuresplash''gtar': $ctype='application/x-gtar''hdf': $ctype='application/x-hdf''phps': $ctype='application/x-httpd-php-source''php''php3''php4''phtml': $ctype='application/x-httpd-php''js': $ctype='application/x-javascript''skd''skm''skp''skt': $ctype='application/x-koan''latex': $ctype='application/x-latex''cdf''nc': $ctype='application/x-netcdf''crl': $ctype='application/x-pkcs7-crl''shar': $ctype='application/x-shar''swf': $ctype='application/x-shockwave-flash''sh': $ctype='application/x-sh''sit': $ctype='application/x-stuffit''sv4cpio': $ctype='application/x-sv4cpio''sv4crc': $ctype='application/x-sv4crc''tar''tgz': $ctype='application/x-tar''tcl': $ctype='application/x-tcl''texi''texinfo': $ctype='application/x-texinfo''tex': $ctype='application/x-tex''man': $ctype='application/x-troff-man''me': $ctype='application/x-troff-me''ms': $ctype='application/x-troff-ms''roff''t''tr': $ctype='application/x-troff''ustar': $ctype='application/x-ustar''src': $ctype='application/x-wais-source''crt': $ctype='application/x-x509-ca-cert''xht''xhtml': $ctype='application/xhtml+xml''dtd': $ctype='application/xml-dtd''xml''xsl': $ctype='application/xml''xslt': $ctype='application/xslt+xml''zip': $ctype='application/zip''au''snd': $ctype='audio/basic''kar''mid''midi': $ctype='audio/midi''mp2''mp3''mpga': $ctype='audio/mpeg''aif''aifc''aiff': $ctype='audio/x-aiff''m3u': $ctype='audio/x-mpegurl''ra''ram': $ctype='audio/x-pn-realaudio''wav': $ctype='audio/x-wav''pdb': $ctype='chemical/x-pdb''xyz': $ctype='chemical/x-xyz''bmp': $ctype='image/bmp''cgm': $ctype='image/cgm''gif': $ctype='image/gif''ief': $ctype='image/ief''jpe''jpeg''jpg': $ctype='image/jpeg''png': $ctype='image/png''svg': $ctype='image/svg+xml''tif''tiff': $ctype='image/tiff''djv''djvu': $ctype='image/vnd.djvu''wbmp': $ctype='image/vnd.wap.wbmp''ras': $ctype='image/x-cmu-raster''ico': $ctype='image/x-icon''pnm': $ctype='image/x-portable-anymap''pbm': $ctype='image/x-portable-bitmap''pgm': $ctype='image/x-portable-graymap''ppm': $ctype='image/x-portable-pixmap''rgb': $ctype='image/x-rgb''xbm': $ctype='image/x-xbitmap''xpm': $ctype='image/x-xpixmap''xwd': $ctype='image/x-xwindowdump''iges''igs': $ctype='model/iges''mesh''msh''silo': $ctype='model/mesh''vrml''wrl': $ctype='model/vrml''ics''ifb': $ctype='text/calendar''css': $ctype='text/css''htm''html''shtml': $ctype='text/html''asc''log''txt': $ctype='text/plain''rtx': $ctype='text/richtext''rtf': $ctype='text/rtf''sgm''sgml': $ctype='text/sgml''tsv': $ctype='text/tab-separated-values''wmls': $ctype='text/vnd.wap.wmlscript''wml': $ctype='text/vnd.wap.wml''etx': $ctype='text/x-setext''mpe''mpeg''mpg': $ctype='video/mpeg''mov''qt': $ctype='video/quicktime''m4u''mxu': $ctype='video/vnd.mpegurl''avi': $ctype='video/x-msvideo''movie': $ctype='video/x-sgi-movie''ice': $ctype='x-conference/x-cooltalk''application/force-download'// Desactivamos el limite de tiempo del script antes de
// iniciar la transferencia.
// Encabezados básicos, pueden agregarse otros
// como los relacionados al cache.
'Last-Modified: ''ETag: "''"''Content-Length: ''Content-Type: ' . $ctype);
 
// Transferencia...
// Solo se llega aquí si la transferencia fue finalizada.
',',''"$displayname:\nAgente: $agente".
"\nReferencia: $referer\nIP $ip - $len bytes - $tiempo segs. ".
"($bytesSeg KB/seg).\n\n"

Modificado el ( jueves, 10 de mayo de 2007 )
 
Cotizaciones
Dólares EstadounidensesCompra
u$s
Venta
u$s
Euros0.930.94
Pesos Argentinos202.24204.47
Reales5.255.30
Pesos Mexicanos18.9119.11
Pesos Chilenos823.42832.50
Pesos Bolivianos6.846.92

Actualizadas el:
20 de marzo de 2023
a las 22:15 Hs.
Visitantes...
Hasta ahora 2139515

Tu IP:
3.236.241.39 Estados Unidos
Suscripciones
Ricardo Lejovitzky - Copyright © 2002-2023 - Derechos Reservados | Tecnologías:  XHTML - CSS - PHP - MySql - Joomla - GeoIP - Flash