Foros del Web » Programando para Internet » PHP »

denegar acceso a un directorio con .htaccess y php

Estas en el tema de denegar acceso a un directorio con .htaccess y php en el foro de PHP en Foros del Web. hy a todos quiero hacr algo asi me explico: en mi servidor tengo unos archivos en una capeta "docs", pero no quiero que cualquiera acceda ...
  #1 (permalink)  
Antiguo 01/10/2007, 11:41
Avatar de after  
Fecha de Ingreso: junio-2006
Ubicación: De marte
Mensajes: 791
Antigüedad: 17 años, 10 meses
Puntos: 10
denegar acceso a un directorio con .htaccess y php

hy a todos


quiero hacr algo asi
me explico:
en mi servidor tengo unos archivos en una capeta "docs", pero no quiero que cualquiera acceda a esa carpeta, sin ser autorizado.
cuando alguien intente acceder directamente asi http://www.misitio.com/docs/archivo.zip y no halla iniciado sesion, que se redirija a la pagina de registro o de inicio sesión y ya cuando se halla logeado si pueda acceder al contenido
como podria hacr esto ?
__________________
@ivancamiloGo
  #2 (permalink)  
Antiguo 01/10/2007, 12:24
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: denegar acceso a un directorio con .htaccess y php

Cuando tuve que hacer eso hice que el htaccess prohíba todo el acceso a la carpeta, y cuando un usuario tenga que bajar un archivo primero tiene que pasar por un .php donde valido el acceso y después mando un readfile de la ruta correcta.
  #3 (permalink)  
Antiguo 01/10/2007, 13:29
Avatar de after  
Fecha de Ingreso: junio-2006
Ubicación: De marte
Mensajes: 791
Antigüedad: 17 años, 10 meses
Puntos: 10
Re: denegar acceso a un directorio con .htaccess y php

me podrías facilitar un ejemplo para entenderlo mejor?
__________________
@ivancamiloGo
  #4 (permalink)  
Antiguo 01/10/2007, 13:50
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: denegar acceso a un directorio con .htaccess y php

En el .htaccess de la carpeta /public_html/downloads ponés "Deny from all"
Y hacés un archivo /public_html/download.php con lo siguiente

Código PHP:
<?php
session_start
();
if (!
$_SESSION['logueado']) { die ('Debés estar logueado para descargar archivos'); }
$archivo $_GET['archivo'];

//cosas de seguridad...
if (strpos($archivo,'../') !== false || substr($archivo,0,10) != 'downloads/') die('Error en la ruta');

//dependiendo del tipo de archivo
header("Content-type: application/octet-stream");
//header('Content-type: application/pdf');

header('Content-Disposition: attachment; filename="' basename($archivo) . '"');

readfile($archivo);

?>
  #5 (permalink)  
Antiguo 02/10/2007, 09:46
Avatar de after  
Fecha de Ingreso: junio-2006
Ubicación: De marte
Mensajes: 791
Antigüedad: 17 años, 10 meses
Puntos: 10
Re: denegar acceso a un directorio con .htaccess y php

bueno perdona mi ignorancia pero soy asi nuevo en el tema de php
el codigo no lo entendi desp de //cosas de seguridad...
si tengo varios archivos por ej datos.doc programa.exe etc... cada archivo q este dentro de la carpeta downloads tiene q nombrarc en el el codigo php?
__________________
@ivancamiloGo
  #6 (permalink)  
Antiguo 02/10/2007, 09:58
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: denegar acceso a un directorio con .htaccess y php

Lo que puse después de cosas de seguridad es que veas que bajen un archivo de la carpeta downloads y no algún archivo .php o cualquier otra cosa
Lo único que tenés que hacer es llamar a ese archivo y pasarle un parámetro con la ruta... por ej download.php?archivo=downloads/miarchivo.zip entonces en download.php verificas que pueda bajar los archivos y que la ruta sea correcta, si es así, le mandás el archivo al usuaio
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 07:34.