tengo un server web en el que hay que logearse para acceder al explorador de archivos.
El problema es que si tienes el link completo puedes descargarte el archivo sin estar logeado
Quiero utilizar algo como (no es por hacer spam) al intentar acceder a este archivo:
http://www.scenebeta.com/system/files/private/DeluxePacmanv196WinENG.rar
si estas logeado se descarga
si no te envia a una pagina de login
he intentado trastear con el .htaccess pero no se como leer si está la persona logeada(utilizo php session)
gracias!
EDIT:
He encontrado como conseguir proteger el acceso a archivos si no tienen privilegios:
El sistema consta de 3 archivos:
.htaccess
Código:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^archivos/(.*)$ /docs/descargar.php?file=archivos/$1 [R,L]
descargar.php
Código:
<?php
// Creado por Maflw en 2011
// Publicado en http://maflw.webuda.com por
// forza la descarga del archivo
//MODIFICADO POR ROILIVETHELIFE
if(isset($_GET['file']) && $_GET['file']!="" && $_GET['file']!="descargar.php"){
$file = $_GET['file'];
$path = str_replace(" ", "-", $_GET['file']);
$filename = basename($path);
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$filename);
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
}
?>
y el otro archivo es el ENCODE explorer http://encode-explorer.siineiolekala.net/
Teneis que modificar el descargar.php para que descarge el archivo unicamente si está logeado(eso depende del sistema que use cada uno)
El encode explorer lo tengo modificado con el mismo sistema para no poder ver el listado de archivos si el user no está logeado.
En los archivos ejemplo la web esta distribuida asi:
Citar
Localhost/docs->archivos del encode explorer, el descargar.php y el htaccess
Localhost/docs/archivos-> donde están los archivos
Localhost/docs/archivos-> donde están los archivos
EL unico fallo son las tildes, que no encontre la forma de que funcionase bien, hay que modificar el htaccess para resolverlo, y debeis arreglar el descargar.php para que no usen cosas como ../../
Salu2!