Foros del Web » Programando para Internet » PHP »

ayuda con un descarga

Estas en el tema de ayuda con un descarga en el foro de PHP en Foros del Web. Hola a todos: estoy haciendo una pequeña zona de descarga donde trato de ocultar la ruta de descarga, eso sale bien mi intencion es poner ...
  #1 (permalink)  
Antiguo 06/07/2006, 15:32
Avatar de decano  
Fecha de Ingreso: diciembre-2005
Ubicación: Montevideo, Uruguay
Mensajes: 146
Antigüedad: 12 años
Puntos: 0
ayuda con un descarga

Hola a todos:
estoy haciendo una pequeña zona de descarga donde trato de ocultar la ruta de descarga, eso sale bien mi intencion es poner la direccion de donde se esta descargando + el nombre del archivo , no se si me explico, cuando le dice al usuario guardar que aparezac el dominio + archivo.zip por ejemplo.
espero que me pudan ayudar.
desde ya gracias.
  #2 (permalink)  
Antiguo 11/07/2006, 03:18
 
Fecha de Ingreso: julio-2006
Mensajes: 3
Antigüedad: 11 años, 5 meses
Puntos: 0
el mismo problema

yo tambien necesito ocultar la url de descarga para evitar leech
ya he probado unos tres metodos pero no resulta en todas las paginas de ayuda tienen la misma solucion y lo peor es que no comentan el codigo

quisieramos un ejemplo

w w w .host.com/mipagina
archivo1.zip archivo2.mp3

estos descargarlos desde una pagina html o php
entiendo que se pone un pequeño script en una pagina php y luego se llama a la descarga por medio de id pero no funciona agradeceria mucho su ayuda

y gracias por los aportes en otros topicos
  #3 (permalink)  
Antiguo 11/07/2006, 03:26
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 11 años, 5 meses
Puntos: 0
Yo para las descargas de esa manera uso sesiones de manera q solo se puedan descargar desde mi sitio web. A la vez lo compagino con que el archivo a descargar nunca se encuentre en la zona pública, es decir, lo coloco por encima del "wwwroot". Así a una página, llamésmola download.php le pasó como argumento por ejemplo el fichero y x supuesto pasando la sesion con su variable correspondiente para verificarla. Así evito a los leechers.

Código PHP:
<?php
session_start
();
if (!isset (
$_SESSION['comprobado']) || $_SESSION['comprobado']!="aprobado") {
            
header ("Location: pagina_de_error.php");
    exit;
}
if (isset (
$_GET['fichero'])) {
    
$fichero=$_GET['fichero'];
    
$directorio='../archivos/'//Este debe encontrarse fuera de la zona pública
    
$fichero=$directorio.$fichero;
             
dl_file_resume ($fichero);
}

function 
dl_file_resume($file){

   
//First, see if the file exists
   
if (!is_file($file)) { die("<b>404 Archivo no encontrado!</b>"); }

   
//Gather relevent info about file
   
$len filesize($file);
   
$filename basename($file);
   
$file_extension strtolower(substr(strrchr($filename,"."),1));

   
//This will set the Content-Type to the appropriate setting for the file
   
switch( $file_extension ) {
     case 
"exe"$ctype="application/octet-stream"; break;
     case 
"zip"$ctype="application/zip"; break;
     case 
"mp3"$ctype="audio/mpeg"; break;
     
//case "mpg": $ctype="video/mpeg"; break;
     //case "avi": $ctype="video/avi"; break;

     //The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
     
case "php":
     case 
"htm":
     case 
"html":
     case 
"txt": die("<b>No se pueden descargas ficheros "$file_extension ."!</b>"); break;

     default: 
$ctype="application/force-download";
   }

   
//Begin writing headers
//  header("Pragma: public");
//  header("Expires: 0");
   
header("Cache-Control:");
   
header("Cache-Control: public"); 
//  header("Content-Description: File Transfer");
   
   //Use the switch-generated Content-Type
   
header("Content-Type: $ctype");
//if your filename contains underscores, you can replace them with spaces
$filespaces str_replace("_"" "$filename);


  
$header='Content-Disposition: attachment; filename='.$filespaces;
   
header($header );
//
header("Accept-Ranges: bytes");
//  header("Content-Transfer-Encoding: binary");

  
$size=filesize($file);
//check if http_range is sent by browser (or download manager)
   
if(isset($_SERVER['HTTP_RANGE'])) {
 list(
$a$range)=explode("=",$_SERVER['HTTP_RANGE']);
//if yes, download missing part
 
str_replace($range"-"$range);
 
$size2=$size-1;
 
$new_length=$size2-$range;
 
header("HTTP/1.1 206 Partial Content");
 
header("Content-Length: $new_length");
 
header("Content-Range: bytes $range$size2/$size");
} else {
 
$size2=$size-1;
 
header("Content-Range: bytes 0-$size2/$size");
 
header("Content-Length: ".$size2);
}
//open the file
$fp=fopen("$file","r");
//seek to start of missing part
fseek($fp,$range);
//start buffered download
while(!feof($fp))
{
//reset time limit for big files
set_time_limit(0);
print(
fread($fp,1024*8));
 
flush();
}
fclose($fp); 
   
   exit;
     

?>
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 05:35.