Foros del Web » Programando para Internet » PHP »

Control para descarga de archivos

Estas en el tema de Control para descarga de archivos en el foro de PHP en Foros del Web. Buenas a todos: La verdad ke no sabia donde poner este post asi ke por lo ke me han komentado debe ser aki ,ahi va ...
  #1 (permalink)  
Antiguo 28/08/2003, 01:43
 
Fecha de Ingreso: agosto-2003
Mensajes: 12
Antigüedad: 20 años, 7 meses
Puntos: 0
Control para descarga de archivos

Buenas a todos:

La verdad ke no sabia donde poner este post asi ke por lo ke me han komentado debe ser aki ,ahi va mi consulta.

El tema es el siguiente: estoy haciendo una web (en flash, compatible kon php, msql etc..), dentro la pagina va a tener un directorio privado restringido para acceso a usuarios atraves de usuario-password hasta aki facil, dentro de ese directorio habra una serie de archivos los kuales los klientes se podran deskargar una vez ke introduzkan su usuario y pass pero aki es donde llega el problema y es ke no todos los klientes van a tener los mismos privilegio o perfiles, por lo ke unos solo se podran descargar 3 archivos, otros 9 otros todos etc..,entonces mis dudas son:
1ª komo puedo restringir la descarga de los archivos de kada usuario?
2ª Podria saber ke archivos se ha bajado kada usuario?
3ª Ke lenguaje o aplicacion seria necesario para realizar esto?

En caso de ke ya exista algun post al respecto postearlo es ke no he podido leer la gran kantidad de post de este foro.

Agradeceria a kualkiera ke me pudiera orientar sobre este tema
  #2 (permalink)  
Antiguo 28/08/2003, 02:15
Avatar de ||Dj||  
Fecha de Ingreso: enero-2002
Mensajes: 2.349
Antigüedad: 22 años, 3 meses
Puntos: 1
Todo lo que buscas hacer es posible mediante php (sesiones) y te seria muy util trabajar tambien con algun motor de base de datos como mysql. Te recomiendo leer las faqs aca en los foros.

PD: alguna ves pensaste en lo molesto que es leer un texto asi como escribis?
  #3 (permalink)  
Antiguo 28/08/2003, 03:13
 
Fecha de Ingreso: agosto-2003
Mensajes: 12
Antigüedad: 20 años, 7 meses
Puntos: 0
Gracias Dj por la rapida respuesta ahora que se que se puede, tendre que ponerme en busca de tutoriales ayudas o codigos que hagan esto, por que mi php es mas bien basico y no digamos el mysql asi que si alguien conoce algun recurso que me pueda ayudar sobre este tema especifico ke me lo postee

Gracias
PD: en cuanto a lo de la escritura es la costumbre(me ha costado un triunfo escribir este post asi )
  #4 (permalink)  
Antiguo 28/08/2003, 07:14
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 20 años, 9 meses
Puntos: 0
Lo que pasa es que el PHP no te va a ayudar a restringir la descarga, sólo a no dar a conocer la URL del archivo a cualquier usuario... si alguien conoce la URL del archivo, aun que no tenga privilegios para hacerlo, en cuanto la ponga en la barra de direcciones del navegador lo va a poder descargar.

No lo se muy bien, pero creo que la única manera de restringir la descarga de archivos de forma efectiva, es teniendo tu propio servidor, ya que los servidores que te dan alojamiento no te facilitan esas características, de todos modos pregunta por ahí, que sobre esto no tengo mucha idéa.

Suerte
  #5 (permalink)  
Antiguo 28/08/2003, 21:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
dolarsrg ...

PHP no sólo puede leer archivos que estén bajo tu "document root" .. osese, que puedes accederlos si conocer su ruta relativa: http://www.tal.tal/ruta ...

PHP puede leer un archivo en el sistema de archivos del servidor con tal de que tenga permisos para su lectura ..

Ejemplo:

Linux:
Código PHP:
readfile("/var/sitio1/nose/archivo.tal"); 
windows:
Código PHP:
readfile("c:\nose\archivo.tal"); 
(Rutas Absolutas .. suponiendo que si usas un servicio de hosting por ejemplo dispongas de un directorio propio superior a tu "document_root" como el típico www o htmldoc o algo así ..)

A si mismo combinando cabeceras HTTP adecuadas (header("content-type .. ") etc .. Y un sistema de registro de usuarios los cuales sean verificados para ejecutar el script en cuestión que realice ese "readfile()" .. ya tendrás tus archivos protegidos y a la espera de que los descarge quien esté autorizado.

Por mucho que conozcan la ruta absoluta .. quedaría fuera del "document_root" así que no podrían llegar por el "URL".

SI no se dispone de un directorio para almacenar los archivos -fuera- del "document_root" .. Sólo cabe usar restricción de acceso a los archivos directametne por un .htacces (y opciones de LIMIT GET .. y demás ... )

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 29/08/2003, 11:46
 
Fecha de Ingreso: agosto-2003
Mensajes: 12
Antigüedad: 20 años, 7 meses
Puntos: 0
Gracias a todos por vuestras contestaciones, es interesante todo lo que habeis comentado , y cluster todo eso que posteas esta muy bien pero el problema es ke mi php esta como diria ... en pañales estoy tratando cada dia de aprender algo por eso no comprendo bien el post y tampoco espero que me des clases pero podrias decirme o pasarme algun tutorial o script ejemplos ke puede estudiar y ver komo puedo hacer lo ke busco.

gracias a todos
  #7 (permalink)  
Antiguo 30/08/2003, 17:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues ejemplos tienes en scripts ya hechos cómo los que puedes ver en:

http://www.hotscripts.com/PHP/Script...ems/index.html

Y en web's cómo www.phpbuilder.com .. www.devshed.com .. www.devarticles.com ... www.zend.com .. por ejemplo seguro que encuentras algún tuorial.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 04/09/2003, 17:24
 
Fecha de Ingreso: septiembre-2003
Mensajes: 15
Antigüedad: 20 años, 7 meses
Puntos: 0
Hola a todos.

Me interesa muy mucho este tema, porque estoy intentando hacer algo parecido, es decir que no sea posible descargar un archivo a través de la url, sólo a través de un *.php.

Me parece que en mi servidor dispongo de varias carpetas ademas de la mencionada "www ó htmldoc", por lo tanto en principio puedo subir en esas carpetas os archivos.

las carpetas que dispongo son:

cgi-bin
anon_ftp
bin
...

He probado a subir los archivos a la carpeta anon_ftp, pero no tengo ni idea de como hacer el php que permita descargar los archivos.

Por favor pido ayuda al respecto.

Un cordial saludo
  #9 (permalink)  
Antiguo 04/09/2003, 18:03
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
Este codigo te sevira para descargar directamente archivos sin poner la url , si no directamente con php y desde cualquier carpeta situada en tu server, aunque lo mejor es la que esta situada antes del public_html o www, osea antes de donde tienes las paginas de tu web,

Código PHP:
$filename=( ruta completa al archivo a descargarincluido archivo)
$tipotipo de archivo, (application/x-zip-compressedpara zipcada extension tiene la suya)

header("Pragma: public");
         
header("Expires: 0");
         
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 

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

         
header("Content-Disposition: attachment; filename=".basename($filename).";");
         
header("Content-Transfer-Encoding: binary");
         
header("Content-Length: ".filesize($filename));
         
readfile("$filename"); 
vigila que no haya ninguna salida antes de este escript, pues te daria error.

espero que te sirva

un saludo
  #10 (permalink)  
Antiguo 04/09/2003, 21:19
Avatar de MSDark  
Fecha de Ingreso: noviembre-2002
Ubicación: Talca VII región
Mensajes: 337
Antigüedad: 21 años, 5 meses
Puntos: 1
como seria el $tipo para un archivo .txt o .html o .php?

Saludos
__________________
DelirioLinux.. Software Libre y tecnología.. php también..
Saludos :arriba:
Usuario Linux #198486 y Ubuntu #12791
Gutsy Gibbon
  #11 (permalink)  
Antiguo 04/09/2003, 21:51
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
texto y html o htm
'.txt' => 'text/plain',
'.html' => 'text/html',

para php pero no estoy completamente seguro
'.php' => 'application/octet-stream',

para saberlas puedes hacerte un form de upload
y lo miras con
$tipo= $_FILE['ARCHIVO']['type']
$tipo tienes el el tipo mime

un saludo
  #12 (permalink)  
Antiguo 05/09/2003, 02:40
 
Fecha de Ingreso: septiembre-2003
Mensajes: 15
Antigüedad: 20 años, 7 meses
Puntos: 0
Muchas gracias Jordi.

Los códigos que has comentado funcionan perfectamente. Los he probado con una archivo que esta dentro del httpdoc (publico).

El problema que tengo es que no sé especificar la ruta "$filename" en caso de que el archivo esté fuera del httpdoc_public.

No obstante tu código me sirve muy bien ya que por lo menos no se ve la ruta. De todas formas se podría conoce la ruta con algún "explorador de sitios web" de esos que ves todas las carpetas y archivos,...

Saludos y muchas gracias.
  #13 (permalink)  
Antiguo 05/09/2003, 05:04
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
Imagino que estas trabajando con tu mismo pc, pues la ruta es la que escribirias normalmente con barras inclinadas unix

c:/carpeta/subcarpeta/archivo.extension (si es windows)
/user/carpeta/dominio.com/archivo.tx (si es unix) en linux imagino lo mismo.

En cuanto a ver la direccion, esta en el directorio protegido
te es igual pues no es posible acceder via internet , solo a traves del mismos servidor.



un saludo
  #14 (permalink)  
Antiguo 05/09/2003, 06:52
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
Hola otra vez , con esta funcion creo que puedes ver el directorio
no accesible via web, la he probado en mi server y rula,
prueba en el tuyo a ver si va bien aunque creo que debe funcionar en todos,

Código PHP:
function dir_protegido()
{        
        
$dir_htms $HTTP_SERVER_VARS['DOCUMENT_ROOT'];
        
$dir=explode("/",$dir_htms);
        
$count_www=count($dir);
        
$dir_www=$dir[$count_www-1];
        
        
$ins=explode("$dir_www",$dir_htms);
        
$directorio_protegido=$ins[0];

        return 
$directorio_protegido;
}
$directorio_protegido=dir_protegido();
echo 
"<li>".$directorio_protegido
un saludo
  #15 (permalink)  
Antiguo 09/09/2003, 12:19
 
Fecha de Ingreso: agosto-2003
Mensajes: 12
Antigüedad: 20 años, 7 meses
Puntos: 0
wuenas a todos:

Son muy interesantes todos vuestros post (ya he tomado nota)pero en el link de Cluster he encontrado unos script ya creados y me he bajado el "rwdownloads" el problema es que lo he subido a mi server "lycos" en el cual ya tengo activada las opciones de mysql y php 4 pero a la hora de instalar el script me da ciertos errores y no se instala

Si hay algun alma caritativa que ya halla usado este escript y sabe como funciona que por favor me lo postee por que como ya dije en mi primer post el php no es mi fuerte pero la necesidad me obliga

Gracias a todos
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 01:16.