Comunidad de diseño web y desarrollo en internet online

Ayuda con este Script por favor

Citar            
MensajeEscrito el 22 Mar 2007 10:57 pm
Hola, encontre un script para ocultar el directorio de descargas, pero no entiendo casi nada... alquien me puede ayudar? gracias, les dejo el codigo para q lo vean...
(lo q me interesa es saber como se oculta el directorio de descargas)

Código :

<?php

###############################################################
# File Download 1.1
###############################################################
# Visit http://www.zubrag.com/scripts/ for updates
###############################################################
# Sample call:
#    download.php?f=phptutorial.zip
#
# Sample call (browser will try to save with new file name):
#    download.php?f=phptutorial.zip&fc=php123tutorial.zip
###############################################################

// Download folder, i.e. folder where you keep all files for download.
// MUST end with slash (i.e. "/" )
define('BASE_DIR','directorio de descargas');

// log downloads?  true/false
define('LOG_DOWNLOADS',false);

// log file name
define('LOG_FILE','downloads.log');

// Allowed extensions list in format 'extension' => 'mime type'
// If myme type is set to empty string then script will try to detect mime type 
// itself, which would only work if you have Mimetype or Fileinfo extensions
// installed on server.
$allowed_ext = array (

  // archives
  'zip' => 'application/zip',

  // documents
  'pdf' => 'application/pdf',
  'doc' => 'application/msword',
  'xls' => 'application/vnd.ms-excel',
  'ppt' => 'application/vnd.ms-powerpoint',
  
  // executables
  'exe' => 'application/octet-stream',

  // images
  'gif' => 'image/gif',
  'png' => 'image/png',
  'jpg' => 'image/jpeg',
  'jpeg' => 'image/jpeg',

  // audio
  'mp3' => 'audio/mpeg',
  'wav' => 'audio/x-wav',

  // video
  'mpeg' => 'video/mpeg',
  'mpg' => 'video/mpeg',
  'mpe' => 'video/mpeg',
  'mov' => 'video/quicktime',
  'avi' => 'video/x-msvideo'
);



####################################################################
###  DO NOT CHANGE BELOW
####################################################################

// Make sure program execution doesn't time out
// Set maximum script execution time in seconds (0 means no limit)
set_time_limit(0);

if (!isset($_GET['f']) || empty($_GET['f'])) {
  die("Please specify file name for download.");
}

// Get real file name.
// Remove any path info to avoid hacking by adding relative path, etc.
$fname = basename($_GET['f']);

// Check if the file exists
// Check in subfolders too
function find_file ($dirname, $fname, &$file_path) {

  $dir = opendir($dirname);

  while ($file = readdir($dir)) {
    if (empty($file_path) && $file != '.' && $file != '..') {
      if (is_dir($dirname.'/'.$file)) {
        find_file($dirname.'/'.$file, $fname, $file_path);
      }
      else {
        if (file_exists($dirname.'/'.$fname)) {
          $file_path = $dirname.'/'.$fname;
          return;
        }
      }
    }
  }

} // find_file

// get full file path (including subfolders)
$file_path = '';
find_file(BASE_DIR, $fname, $file_path);

if (!is_file($file_path)) {
  die("File does not exist. Make sure you specified correct file name."); 
}

// file size in bytes
$fsize = filesize($file_path); 

// file extension
$fext = strtolower(substr(strrchr($fname,"."),1));

// check if allowed extension
if (!array_key_exists($fext, $allowed_ext)) {
  die("Not allowed file type."); 
}

// get mime type
if ($allowed_ext[$fext] == '') {
  $mtype = '';
  // mime type is not set, get from server settings
  if (function_exists('mime_content_type')) {
    $mtype = mime_content_type($file_path);
  }
  else if (function_exists('finfo_file')) {
    $finfo = finfo_open(FILEINFO_MIME); // return mime type
    $mtype = finfo_file($finfo, $file_path);
    finfo_close($finfo);  
  }
  if ($mtype == '') {
    $mtype = "application/force-download";
  }
}
else {
  // get mime type defined by admin
  $mtype = $allowed_ext[$fext];
}

// Browser will try to save file with this filename, regardless original filename.
// You can override it if needed.

if (!isset($_GET['fc']) || empty($_GET['fc'])) {
  $asfname = $fname;
}
else {
  $asfname = $_GET['fc'];
}

// set headers
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: $mtype");
header("Content-Disposition: attachment; filename=\"$asfname\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . $fsize);

// download
@readfile($file_path);

// log downloads
if (!LOG_DOWNLOADS) die();

$f = @fopen(LOG_FILE, 'a+');
if ($f) {
  @fputs($f, date("m.d.Y g:ia")."  ".$_SERVER['REMOTE_ADDR']."  ".$fname."\n");
  @fclose($f);
}

?>

Por petrov

186 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Mar 2007 02:46 am
No entiendo a que te referis con "ocultar el directorio de descargas".

Por PabloHdS

251 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Mar 2007 09:37 pm
es q por ejemplo... al bajar algo (por lo menos en firefox se hace asi) tu lo estas bajando y haces click derecho y propiedades y ves de donde viene el archivo, con este codigo se ve otra cosa, el archivo se llama download.php, y si das click en download.php?f=archivo.extensio, busca el archivo.extension en el directorio q se le indica arriba y tu al intentar ver de donde viene el archivo con el navegador ves: http://misitio/downlod.php?f=archivo.php, eso es...

Por petrov

186 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 24 Mar 2007 03:47 am
Lo que hace es no poner un link directo, sino que hace un "manejador de descargas" para los archivos. La ciencia de ese script es que indicas el archivo que quieres abrir por una "clave" en este caso es el mismo nombre del archivo pero bien podria ser un numero (claro con un procesamiento de datos de entrada), buscar el archivo con esa clave en el directorio destinado para almacenar los archivos que ofreces para descargar y "forzar/ejecutar" la descarga de ese archivo con los header...

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 24 Mar 2007 05:43 pm
y con q funciones de ese codigo se abre el archivo?

Por petrov

186 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 24 Mar 2007 09:43 pm
find_file busca el archivo en la carpeta que le indicaste en BASE_DIR y retorna la ruta completa del archivo, esa ruta la usa en los headers para forzar la descargas

Código :

header("Pragma: public");

header("Expires: 0");

header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

header("Cache-Control: public");

header("Content-Description: File Transfer");

header("Content-Type: $mtype");

header("Content-Disposition: attachment; filename=\"$asfname\"");

header("Content-Transfer-Encoding: binary");

header("Content-Length: " . $fsize);


saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 25 Mar 2007 02:45 am
oh, gracias...

Por petrov

186 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 04 Abr 2007 09:12 pm
Un saludo, bueno te cito por lo siguiente e bajado el script pero no entiendo muy bien como se maneja, por eso te escribo, si tengo un link para descargar un documento lo usual es hacerlo asi:
<a href="www.mipagina.com/carpetadearchivo/nombredearchivo">Descarga el documento dando click AQUI</a>
si uso este script donde se debe guardar (en que apret de mi pagina) y como queda modificado el link (<a href=" "></a>)
Mil gracias

Por manzanofab

0 de clabLevel



Genero:Masculino  

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.