Foros del Web » Programando para Internet » PHP »

restringir pdf, word, etc...

Estas en el tema de restringir pdf, word, etc... en el foro de PHP en Foros del Web. Hola tengo un par de sistemas para restrigir el acceso a ciertos archivos php, uno es mediante cookies y otro mediante sesiones, los dos funcionan ...
  #1 (permalink)  
Antiguo 28/01/2004, 21:00
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 15 años, 1 mes
Puntos: 2
restringir pdf, word, etc...

Hola tengo un par de sistemas para restrigir el acceso a ciertos archivos php, uno es mediante cookies y otro mediante sesiones, los dos funcionan ma o meno xdd, el problema es que en las secciones hay links a archivos pdf, word, etc.., como podría proteger estos archivos???, he pensado en redireccion automatica de pero no me convence mucho..., alguna idea mejor y sobre todo más segura???

Un saludo.
  #2 (permalink)  
Antiguo 29/01/2004, 13:15
Avatar de Antonito  
Fecha de Ingreso: noviembre-2001
Ubicación: en la red
Mensajes: 446
Antigüedad: 16 años
Puntos: 3
Si te recomiendo que los metas en una carpeta y protejas esta con un htaccess.

Si quieres leer algo sobre el tema :
http://www.europeanwebmasters.com/Spanish/htaccess.html
es más :
http://www.google.es/search?hl=es&ie...a=lr%3Dlang_es

__________________
Pancho - Consultor de usabilidad
  #3 (permalink)  
Antiguo 29/01/2004, 14:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Con PHP también puedes hacer un "lanzador" de archivos .. el cual lea el archivo (PHP) desde el sistema de archivos del servidor y lo entregue para descarga. El único requisito de seguridad es que tus archivos queden fuera del "document root" de tu sitio para que no sean accesibles vía http://www.tal.ta/archivo.tal .. del resto se encargaría PHP.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 31/01/2004, 16:07
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 15 años, 1 mes
Puntos: 2
Hola Cluster, revisando información de aqui y de alla he llegado a este code, no funciona..., podrías decirme que tal esta y si voy por buen caminino???

Código PHP:
<?
    $resultado 
mysql_query("SELECT * FROM $tabla WHERE ID='{$_GET['id']}'",$conexion);
    
        while (
$fila mysql_fetch_array($resultado))
    
    {
 
$archivo=$fila["url"];

    }

header("Content-Type: application/download\n");
header("Content-Disposition: attachment; filename=$archivo");

?>
Un saludo.
  #5 (permalink)  
Antiguo 01/02/2004, 07:58
Avatar de Antonito  
Fecha de Ingreso: noviembre-2001
Ubicación: en la red
Mensajes: 446
Antigüedad: 16 años
Puntos: 3
Aunque la pregunta no va para mi te respondo por si te sirve de algo:

¿Porque haces un bucle? Eso puedes ahorrartelo, ya que si solo quieres un registro....
Código PHP:
    $resultado mysql_query("SELECT * FROM $tabla WHERE ID='{$_GET['id']}'",$conexion);
    
        while (
$fila mysql_fetch_array($resultado))
    
    {
 
$archivo=$fila["url"];

    } 
Pero lo que te interesa el código que yo uso, para qeu me abra un pdf es este :

Código PHP:
filename=".$nombre.""); 
header("
Pragma: public");
header("
Expires0");
header("
Cache-Controlmust-revalidatepost-check=0pre-check=0"); 
header("
Content-Typeapplication/force-download");
header("
Content-Typeapplication/octet-stream");
header("
Content-Typeapplication/download");
header("
Content-Dispositionattachmentfilename=".$nombre.";");
header("
Content-Transfer-Encodingbinary");
header("
Content-Length".filesize($nombre)); 
Y ahora una pregunta, ¿que quieres preguntar tu? ¿como restringir el acceso a determinados ficheros? ¿como redirigir a un fichero ed la bbdd? ¿cual? Noqueda muy claro.. :)

hehe

saludos.
__________________
Pancho - Consultor de usabilidad
  #6 (permalink)  
Antiguo 01/02/2004, 16:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Antonito .. si no me equivoco .. el navegador al recibir tus cabeceras HTTP .. se queda con UNA sólo (la última o primera?) de una secuencia repetida tipo:

header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");

Si el fin de tener tantas cabeceras es la de compatibilidad con diferentes navegadores .. deberías identificar el navegador y saber que cabeceras le van mejor para que interprete como archivo a descargar lo que se le está enviando ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 02/02/2004, 05:35
Avatar de Antonito  
Fecha de Ingreso: noviembre-2001
Ubicación: en la red
Mensajes: 446
Antigüedad: 16 años
Puntos: 3
claro que se queda la última, las que no son del navegador que usa, las desecha no?
__________________
Pancho - Consultor de usabilidad
  #8 (permalink)  
Antiguo 02/02/2004, 06:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Mas bien (no te lo puedo confirmar) .. el "navegador" se queda con la última sentecia repetida que envies .. (idependiente de que si es la correcta o mejor para el navegador en cuestión ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 02/02/2004, 07:38
Avatar de Antonito  
Fecha de Ingreso: noviembre-2001
Ubicación: en la red
Mensajes: 446
Antigüedad: 16 años
Puntos: 3
Ok, entiendo, lo que no comprendía es que lemandaba repetidas.

Muchas Thx ;)
__________________
Pancho - Consultor de usabilidad
  #10 (permalink)  
Antiguo 03/02/2004, 20:56
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 15 años, 1 mes
Puntos: 2
Antes que nada gracias Antonito y Cluster por las respuestas, lo que quiero exactamente es que cuando los usuarios ya se han autenticado y están en las secciones solo autorizadas a los usuarios, cuando descarguen un archivo (pdf, word, etc...) , no se vea la url y se vea lo de tipo http://www.dominio.com/archivos/archivo.php?id=24 donde este archivo tendra primero el code para los comprobar que es un usuario registrado(eso ya lo tengo), y después permitirle descargar el archivo recogiendo el id via $_GET['id'], buscar en la base de datos el id correspondiente que contendra la verdadera url del archivo y entonces que ya descargue el archivo.

Entonces quiero saber si las cabeceras que estoy utilizando son las correctas para este proposito???

Código PHP:
<?
    $resultado 
mysql_query("SELECT * FROM $tabla WHERE ID='{$_GET['id']}'",$conexion);
    
        while (
$fila mysql_fetch_array($resultado))
    
    {
 
$archivo=$fila["url"];

    }

header("Content-Type: application/download\n");
header("Content-Disposition: attachment; filename=$archivo");

?>

El código este no se porque??? pero solo me generá un pagina en blanco no descarga el archivo... , que está mal???

Un saludo.
  #11 (permalink)  
Antiguo 04/02/2004, 09:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Te faltó leer el archivo y entregarlo al buffer de salida ..

Eso lo puedes hacer con una sóla función:

Código PHP:
readfile($archivo); 
(despues de las cabeceras HTTP y suponiendo que $archivo tiene la ruta completa hacia el archivo ...)

Y el:

Código PHP:
header("Content-Disposition: attachment; filename=$archivo"); 
mejor usa:

Código PHP:
header("Content-Disposition: attachment; filename=".basename($archivo)); 
con basename() te quedas con el nombre_archivo.tal de la ruta completa que pueda tener y ese será el nombre que se ofrecerá para la descarga.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 05/02/2004, 13:45
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 15 años, 1 mes
Puntos: 2
Ok gracias Cluster.

Un saludo.
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 09:41.