Ver Mensaje Individual
  #3 (permalink)  
Antiguo 22/07/2005, 06:24
Inside PHP
 
Fecha de Ingreso: marzo-2005
Mensajes: 76
Antigüedad: 19 años
Puntos: 0
En el index tienes algo así:

Código HTML:
<A HREF="download.php?file=000184">ejemplo 1.pdf</A>
<A HREF="download.php?file=000312">ejemplo 2.mp3</A> 
y en 'download.php' este pseudo código:

Código PHP:
    Autentifica y blah blah blah...
    
    if( 
$hay_cookie_autentificada ) {
        
$filename_real  "";
        
$filename_en_disco "";
        if( isset(
$_GET['file']) ) {
            
$file_ID $_GET['file'];
            if( 
$file_ID != '' ) {
                switch ( 
$file_ID ) {
                    case 
000184:
                        
$filename_real  "ejemplo 1.pdf";
                        
$filename_en_disco "xxxABCDEF_184";  // arbitrario
                        
break;
                    case 
000312:
                        
$filename_real  "ejemplo 2.mp3";
                        
$filename_en_disco "xxxABCDEF_312";  // arbitrario
                        
break;
                    default:
                        break;
                }
            }
        }
        if( 
$filename_real != "" AND $filename_en_disco != "" ) {
            if( !
file_exists($filename_en_disco) ) {
                
$filename_en_disco "";
            }
        }
        if( 
$filename_real != "" AND $filename_en_disco != "" ) {
            
            
$filetime filectime($filename_en_disco);
            
$filesize filesize($filename_en_disco);
            
$fp fopen$filename_en_disco"rb" );
            
$filedata fread($fp$filesize);
            
fclose($fp);
        
            
header("Cache-control: max-age=31536000");
            
header("Expires: " gmdate("D, d M Y H:i:s",time()+31536000) . " GMT");
            
header("Last-Modified: " gmdate("D, d M Y H:i:s",$filetime) . " GMT");
            
header("Content-disposition: inline; filename=$filename_real");
            
header("Content-Length: $filesize");
            
$extension=strtolower(substr(strrchr($filename_real,"."),1));
    
            if (
$extension=='gif') {
              
header('Content-type: image/gif');
            } elseif (
$extension=='jpg' or $extension=='jpeg') {
              
header('Content-type: image/jpeg');
            } elseif (
$extension=='png') {
              
header('Content-type: image/png');
            } elseif (
$extension=='pdf') {
              
header('Content-type: application/pdf');
            } elseif (
$extension=='mp3') {
              
header('Content-type: audio/mpeg');
            } else {
              
header('Content-type: unknown/unknown');
            }
            echo 
$filedata;        //  envía el file
        
}
        else {
            
El 'file_ID'está vacío o es inválido
        
}
        
    }
    else {
        
No autorizado
    

Nota que de lo que se trata es de que no sepa qué nombre tiene el file en el disco, nombre que tú conoces, obtienes (aquí con un CASE aunque puedes hacerlo con una base de datos) y es ese el file que le envías.