elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Evitar descarga de archivos si el usuario no esta logueado
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Evitar descarga de archivos si el usuario no esta logueado  (Leído 11,244 veces)
Mr. Crowley


Desconectado Desconectado

Mensajes: 343


Costa Rica


Ver Perfil WWW
Evitar descarga de archivos si el usuario no esta logueado
« en: 29 Noviembre 2009, 04:56 am »

Saludos  ;D

Tengo un sitio donde se le permite hacer descargas a los usuarios registrados. Si el
usuario se ha logueado tiene acceso a la pagina de descargas, donde estan los links
de los archivos que puede bajarse. Ejemplo de un link: http://www.examples.com/archivo.rar

Quiero evitar que un usuario le pase ese link a otra persona... y que pueda descargar
el contenido que es solo para miembros. Necesito hacer una verificacion, y no se como
funciona.

Algo asi: cuando se pone el link en el navegador, la pagina o el servidor web (no se
quien tenga que hacerla)... verifica que el usuario este logueado; si lo esta entonces
se puede bajar el archivo, si no, entonces se le muestra un mensaje diciendole que se registre en el sitio.

Que tan complicado es esto? Se que se puede hacer, si alguien puede guiarme se lo
agradezco  :P


En línea

Mi blog personal: www.calirojas.com
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Evitar descarga de archivos si el usuario no esta logueado
« Respuesta #1 en: 29 Noviembre 2009, 09:03 am »

Hla puedes hacer un archivo .htaccess y un .htpasswd para crear un nombre de usuario y contraseña pero lo malo es que si quieres cambiar el usuario tendrás que cambiar el archivo y no es muy productivo :-/

Lo otro que puedes hacer es obtener el archivo desde un php, o sea test.php?archivo=test.rar y entonces el php dirá fopen() a test.rar (cuidado con los retrocesos de directorio ../ ) y le vas haciendo echo al contenido que te vaya devolviendo el fread y recuerda no abrirlo completamente de una sola ves, o sea... cuando haces fread() le indicas el manipulador (handle) y la cantidad de carácteres que desea obtener del archivo, por lo general muchos utilizan filesize por lo tanto obtiene todo el archivo de una sola ves, si el archivo es muy grande entonces php no podrá cargar todo en memoria y dará error, por o tanto te recomiendo que le hagas un while de a 1024 carácteres y vas lanzando echo inmediatamente, luego cuando termine el while le haces fclose y exit; para que el resto de la web no intervenga en el contenido del archivo y de cabezera le pones que el tipo de archivo es ocet-stream para forzar al explorador su descarga.

Saludos.


En línea

gabonix

Desconectado Desconectado

Mensajes: 3


Ver Perfil WWW
Re: Evitar descarga de archivos si el usuario no esta logueado
« Respuesta #2 en: 29 Noviembre 2009, 21:42 pm »

O tambien puedes poner un simple codigo PHP en el header de tu pagina para que no ingrese si no esta logeado

if($usuarioRegistrado == true) {
     
      $name = $_GET['file'];
      header("Content-disposition: attachment; filename=$name");
      header("Content-type: application/octet-stream");
      readfile($directorio.'/'.$name);
 
   } else {
 
      echo "solo los usuarios registrados pueden descargar archivos";
   }

saludos :)
En línea

Visita mi blog: http://gabonix.multimedianetworks.com.ar

Levantandome de entre las cenizas como el gato felix
Mr. Crowley


Desconectado Desconectado

Mensajes: 343


Costa Rica


Ver Perfil WWW
Re: Evitar descarga de archivos si el usuario no esta logueado
« Respuesta #3 en: 30 Noviembre 2009, 01:22 am »

Hola, gracias a ambos. No se me habia ocurrido pasar el archivo por variable. Que les
parece si hago algo asi:

1. Coloco todos los archivos disponibles para descargar en la carpeta DESCARGAS (ejemplo)
2. El link para descargar un archivo seria: pagina.php?strArtchivo=Nombre_De_Archivo

En ese caso nadie sabra donde guardo los archivos, entonces siempre van a tener que
estar registrados para poder hacer la descarga...

Lo siguiente seria implementar lo que me dice gabonix.

Código
  1. if($usuarioRegistrado == true) {
  2.     $directorio="DESCARGAS";
  3.      $name = $_GET['strArchivo'];
  4.      header("Content-disposition: attachment; filename=$name");
  5.      header("Content-type: application/octet-stream");
  6.      readfile($directorio.'/'.$name);
  7.  
  8.   } else {
  9.  
  10.      echo "solo los usuarios registrados pueden descargar archivos";
  11.   }
  12.  

Gracias!  ::)
En línea

Mi blog personal: www.calirojas.com
Mr. Crowley


Desconectado Desconectado

Mensajes: 343


Costa Rica


Ver Perfil WWW
Re: Evitar descarga de archivos si el usuario no esta logueado
« Respuesta #4 en: 5 Enero 2010, 22:28 pm »

Hola de nuevo... me funciono a la perfeccion el codigo en Firefox, Safari y Opera; pero
sucede que el Internet Explorer Intershit Explorer no descarga el archivo, lo que
intenta descargar es la pagina que contiene las descargas  :(

Osea, tengo una pagina "descargas.php" a la que le paso el archivo que quiero bajar.
Un ejemplo seria: "descargas.php?archivo=loquesea.rar"

Ahi valido si el usuario inicio una sesion o no, si esta iniciada entonces le permito
descargar el fichero, sino es redireccionado a otra pagina.

Internet Explorer intenta descargar la pagina "descargas.php", y no el archivo, como lo
hacen los otros browsers. Que podra ser? La prueba la hice con IE6.
En línea

Mi blog personal: www.calirojas.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[ayuda] Seguridad web de un usuario logueado
Nivel Web
hardjesjlc 4 4,544 Último mensaje 20 Abril 2012, 16:34 pm
por rassiel
Evitar que usuario tome ventaja en servidor web
Redes
javier234- 2 2,134 Último mensaje 25 Octubre 2013, 19:46 pm
por javier234-
mostrar el nombre y el apellido del usuario logueado en el navbar
PHP
jose4lfredo 1 9,308 Último mensaje 17 Mayo 2017, 09:28 am
por hechicerd0
Desactiva esta opción de Office para evitar ser atacado con archivos Word o ...
Noticias
wolfbcn 0 2,090 Último mensaje 23 Octubre 2017, 21:35 pm
por wolfbcn
Mostrar datos de usuario logueado en php
PHP
ASCII 1 3,976 Último mensaje 24 Julio 2018, 17:47 pm
por #!drvy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines