Ver Mensaje Individual
  #3 (permalink)  
Antiguo 18/11/2004, 06:28
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
ignacio_giri (tomalo como una crítica constructiva)

El uso de las funciones de sesiones que haces está bastante anticuado .. deberías usar los arrays superglobales $_SESSION y verificar su existencia con funciones como empty() o isset() ... en lugar de "session_is_registered".

Por otro lado .. si hablas de un archivo que haces ahí con un "include()" deberías presentar el código que corresponde .. Para que se vea por ejemplo en ese caso que al menos necesita iniciar el uso de sesiones con: session_start() minimo.

------

Si redireccionas con header("Location: ") hacia el archivo .. en el URL se vé el link que quedó directo para descargar el archivo .. lo cual si bien "ocultará" donde están esos archivos a gente agena al sitio .. a los própios usuarios del sistema si en alguna ocasión les restringes el acceso .. igual podrían pasar por alto tus restricciones.


ebe ...

Para solventar el problema puedes hacer:

1) subir tus archivos fuera del "document_root". En un servicio de hosting común el "document_root" apunta al directorio /public_html/ y tiene un alias en /www/ .. se trataría de crearte un directorio por encia de este y ahí colocar tus archivos, de esta forma quedan fuera del acceso vía HTTP con una llamada directa por el URL tipo: http://www.tal.tal/archivos/tal.pdf

2) hace que PHP acceda al archivo por el sistema de archivos del servidor con rutas absolutas hacia el mismo y usando las cabeceras HTTP para componer el formato MIME y otros detalles sobre el archivo que vas a ofrecer para descargar o mostrar en línea (inline).

Para eso, .. puedes usar la función header() con las cabeceras HTTP correspondientes para indicar que el archivo es un "pdf" y la función readfile() para leer el archivo desde su ubicación "absoluta" (/home/sitio.tal/archivos/archivo.pdf) y entregarlo al buffer de salida de PHP (sería equivalente a un fopen() y afines más un "echo" al contenido que leas ..)

De esto tienes ejemplos en la documentación oficial de header() en el manual oficial de PHP:

www.php.net/header

Código PHP:
<?php

// tu validación de existencia de variables de sesión y otras variables que uses para validar.

// ruta absoluta a tu archivo pdf .. por supuesto puede ser variable .. esto es un ejemplo.
$pdf="/hombe/sitio.tal/archivos/nose.pdf";

// Definición del archivo que enviarás al "cliente".
header('Content-type: application/pdf');

// El nombre del archivo que verá el usuario al descargarlo.
header('Content-Disposition: attachment; filename="'.basename($pdf).'"');

// leer y  entregar el archivo al buffer de salida .. aquí se inciará la descarga o apertura de tu lector de PDF si lo tiene instalado tu usuario ..
readfile('original.pdf');
?>
Un saludo,