Ver Mensaje Individual
  #3 (permalink)  
Antiguo 22/07/2005, 06:24
Inside PHP
 
Fecha de Ingreso: marzo-2005
Mensajes: 76
Antigüedad: 21 años, 7 meses
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.