Foros del Web » Programando para Internet » PHP »

Como ocultar la ruta de un archivo en la barra de url??

Estas en el tema de Como ocultar la ruta de un archivo en la barra de url?? en el foro de PHP en Foros del Web. Buenas, tengo un problema. tengo un sitio restringido a usuarios para descargar unos archivos. cuando dan para descargar, busca la ruta en la base de ...
  #1 (permalink)  
Antiguo 22/01/2004, 13:21
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Como ocultar la ruta de un archivo en la barra de url??

Buenas, tengo un problema. tengo un sitio restringido a usuarios para descargar unos archivos. cuando dan para descargar, busca la ruta en la base de datos (donde tengo subido el archivo). el problema es que me aparece toda la ruta en la barra de direcciones.. hay alguna manera de que no aparezca?

es que si aparece, cualquiera puede copiar la ruta y descargarse el archivo. la pagina no la pueden ver, pq controlo que esten registrados, pero como pueo controlar si ponen la ruta directamente en la barra de direcciones¿¿¿

espero haberme explicado, salu2!
  #2 (permalink)  
Antiguo 22/01/2004, 13:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tienes que forzar la descarga desde PHP. Para ello necesitas componer las cabeceras HTTP adecuadas para que el navegador sepa que lo que se le va a enviar es para que lo descargue. A su vez .. PHP lo que hará es leer ese archivo y ponerlo en el buffer de salida (puede ser un simple echo .. o un readfile() .... etc).

Lo ideal de todo esto es que a su vez tengas tus archivos "fuera" de tu document_root así evitarias que si supiesen la ruta completa tipo:
http://www.nose.tal/descargas/aqui.zip

pudieran descargarlo sin pasar por tu script php que va a "lanzar" este archivo. Las rutas en estos casos han de ser absoluta (/var/www/nose/bla .. y similares o en windows: c:\nose\bla ..NO http://www.tal.tal/tal)

Un ejemplo:
http://www.forosdelweb.com/showthrea...hreadid=115977

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 22/01/2004, 14:04
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
gracias clkuster, aunque se me escapa un poco... yo tengo lo siguiente:

$url = "http://www.loqsea/_admin/_noticias/archivos";

y en el campo de la base de datos, le inserto el nombre en esa ruta. como tendria q poner la cabecera? q tendria q modificar
  #4 (permalink)  
Antiguo 22/01/2004, 14:16
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
perdona, s eme olvidaba, y luego hago

$link=$url."/".$archivo_nom;

y inserto en el campo la ruta entera + el nombre, y enb otro campo solo el nombre...
  #5 (permalink)  
Antiguo 22/01/2004, 14:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
La ruta que debes guardar sería una ruta absoluta tipo:

// para tomar el /var/www/etc .. que corresponda a tu raiz de tu sitio desde el raiz de ese sistema de archivos de ese servidor.
$url=$_SERVER['DOCUMENT_ROOT']."/_admin/_noticias/archivos";

Pero, como ya te dije .. si puedes "subir" esos archivos fuera de tu DOCUMENT_ROOT .. mejor:

Por ejemplo .. en la mayoría de servicios de hosting se tiene una estrutura tipo:

(al entrar a tu FTP ..):

html_public/
cgi-bin/
www/

El document_root suele apuntar a: html_public/ ..ahí pones tus paginas web .. etc. Si tus archivos los pones fuera de ahí .. no serán accesibles via http://www.nose.tal/archivos ... Por eso es necesario indicar rutas absolutas .. y no relativas (con http://) ya que tus archivos son leidos desde el servidor y su ruta dentro de su sistema de archivos por PHP para entregarlo al navegador.

Las llamadas a tus archivos pueden quedar tipo:

bajar_archivo.php?archivo=blabla.zip

ò

bajar_archivo.php?archivo=1

o como hagas referencia a tu archivo en tu BD ..

En el URL no veras nada .. por qué se entrega directo al navegador . no se "redirecciona" o "linkea" a ese archivo directo sino que es "PHP" el que lo lee de donde esté y lo entrega al navegador para descarga (para eso usa las cabeceras HTTP como las del ejemplo).

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 22/01/2004, 15:38
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
lo siento cluster, pero sigo sin entenderte!!
  #7 (permalink)  
Antiguo 22/01/2004, 15:53
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
te pongo lo el codigo q yo tengo...


<?
$archivo_nom=eregi_replace(" ","_",$archivo_name);
if(!copy($archivo, "archivos/".$archivo_nom))
{
$u="1000";
echo "error al copiar el archivo ".$archivo_name." (".$archivo_size/$u." kb)";
}
else
{
$url = "http://www.loqsea/scripts/_admin/_noticias/archivos";
$fecha=date("d")."/".date("m")."/".date("y");
$link=$url."/".$archivo_nom;
$connect=mysql_connect("a","a","a") or die(mysql_error());
$sql="INSERT INTO noticias(descripcion,archivo,fecha,arch_nom) VALUES ('$desc','$link','$fecha','$archivo_nom')";
$selec=mysql_select_db("a") or die(mysql_error());
$query=mysql_query($sql) or die(mysql_error());
$mensaje .= "L'arxiu ha estat pujat correctament. ";
$mensaje .= "Gràcies.";
echo $mensaje;
}
?>
  #8 (permalink)  
Antiguo 23/01/2004, 07:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm vamos a ver si lo explico de otra forma ..

¿Tu conoces como funciona el sistema de archivos de un servidor web?

bueno .. a grandes rasgos .. cuando tu accedes a una pagina de un servidor web (HTTP) por:

http://www.tal.tal/ruta/archivo.tal

"internamente" .. ese /ruta/archivo.tal corresponde a una ruta "fisica" dentro de ese servidor (de su HD .. sistema de archivos).

en windows sería tal vez:
c:\www\miswebs\misitio\ruta\archivo.tal

pero el "document_root" .. "cuelga" desde c:\www\miswebs\misistio

(en Linux sería algo tipo: /var/www/sitio1/html_public (o similar))

A este tipo de rutas se le denomina "ruta absoluta" por qué se refiere al sistema de archivos en sí de ese servidor y no a lo que "tipeas" por el URL: http://www.tal.ta/ruta/archivo.tal

Si quieres "ocultar" tu ruta desde un navegador .. tendras que hacer que PHP lea ese archivo desde la ruta "fisica" de donde se encuentra ese archivo en ese "disco duro" de ese servidor. La ruta "absoluta" tendrá uno u otro formato dependiendo del sistema operativo del servidor (ejemplos ya te he puesto aquí).

Esa "ruta absoluta" de donde "cuelga" tu sistio en ese servidor la puedes obtener desde la variable de servidor "DOCUMENT_ROOT" como ya te mencioné (lo puedes ver en un phpinfo() también) y .. a partir de ahí .. tu estructura continua tal cual lo tienes /ruta/archivo.tal o lo que corresponda.

¿eso está claro?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 27/01/2004, 13:31
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Hola cluster, perdona la tardanza poero he estado fuera. entiendo un poco, pero no puedo cambiar la ruta. yo tengo guardado en la bd: la ruta donde guardo el archivo (tal y como te comente). hago link a dicha ruta, y claro, veo toda la direccion en la url..

si quisiera hacer eso de descargar.php?... q codigo tendria q tenber dicho archivo? es q no me acaba de salir...

salu2.
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 18:46.