Foros del Web » Programando para Internet » PHP »

Como descargar archivo sin permitir acceso directamente a el

Estas en el tema de Como descargar archivo sin permitir acceso directamente a el en el foro de PHP en Foros del Web. no quiero una pagina de autentificacion de usuarios, esa ya la tengo. hola que tal, voi al grano tengo una web con una seccion de ...
  #1 (permalink)  
Antiguo 10/08/2008, 22:09
 
Fecha de Ingreso: junio-2008
Mensajes: 4
Antigüedad: 15 años, 10 meses
Puntos: 0
Como descargar archivo sin permitir acceso directamente a el

no quiero una pagina de autentificacion de usuarios, esa ya la tengo.

hola que tal, voi al grano

tengo una web con una seccion de descargas que es mas o menos asi: (es una tabla, la primera columna es un enlace)
|_________________________________________________ _______________|
NOMBRE DEL ARCHIVO | Descripcion .................................................. ........|
|_________________________________________________ _______________|
| pro1.c .....................| descripcion del archivo 1 ......................................!
__________________________________________________ ______________|
| pro2.c .....................| descripcion del archivo 2 ..................................... |
|_________________________________________________ _______________|
| pro3.c ..................... | descripcion del archivo 3 .....................................|
|_________________________________________________ _______________|

Los archivos de la primera columna no existen ya que en el servidor los tengo con el nombre codigoc1.c, codigoc2.c, codigoc3.c Lo que yo quiero es que cuando den click en un enlace se descargue el archivo que le corresponda; por ejemplo si dan click en pro1.c que se descargue codigoc1.c. Ya intente copiar el contenido del archivo del servidor en otro con la funcion copy (copy($file, $newfile);) pero me manda error dciendo que no tengo permisos o algo asi:

Código:
Warning: copy(pro1.asm) [function.copy]: failed to open stream: Permission denied in xxx/descargas/download.php on line 77
como son puros archivos de codigo creo que los puedo copiar abriendolos con fopen() y extraer su contendo en otro archivo con fgetc() no?

exactamente lo que no quiero es que el usuario pueda escribir algo como:
www.misition.algo/descargas/codigoc1.c y pueda ver el archivo.

pienso que si lo guardo con otro nombre y creo una copia nueva del archivo que se intenta descargar ps es imposible que se pueda acceder directamente a el.

alguien sabe como hacer esto?

..o alguna otra solucion a mi problema?

de antemano grax. buenas noches.
  #2 (permalink)  
Antiguo 11/08/2008, 00:39
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 2 meses
Puntos: 62
De acuerdo Respuesta: Como descargar archivo sin permitir acceso directamente a el

un ejemplo:
Código PHP:
<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');
?>
extraido de http://www.php.net/header
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #3 (permalink)  
Antiguo 11/08/2008, 23:49
 
Fecha de Ingreso: junio-2008
Mensajes: 4
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Como descargar archivo sin permitir acceso directamente a el

funcionooo

que bien, muchas gracias ZiTAL te debo una. falta hacer algunos arreglos para pasar por la URL el id del archivo, pero eso ya es pan comido. otra cosa, la primera cabecera la combie y al final quedo asi:

Código PHP:
<?php
// We'll be outputting a PDF
     
header("Content-type: application/octet-stream");

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="pro1.c"');

// The PDF source is in original.pdf
readfile('progc1.c');
?>
como dije esta incompleto pero si e logrado lo que queria.

gracias, gracias
  #4 (permalink)  
Antiguo 12/08/2008, 00:20
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 2 meses
Puntos: 62
Respuesta: Como descargar archivo sin permitir acceso directamente a el

Para más seguridad podrias tener los archivos que quieres descargar fuera del documentroot, me explico:

si la pagina la tienes en:

/home/gonzasilve/web/public_html/

y aqui los correpondientes ficheros php, js, html etc que se ven en la web, tener una carpeta:

/home/gonzasilve/web/private_data

y que sea inaccesible desde fuera, solo para llamadas internas, asi FIJO que no te lo descargan de ilegal ;)
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
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 14:22.