Ver Mensaje Individual
  #5 (permalink)  
Antiguo 09/11/2015, 22:45
Avatar de xfxstudios
xfxstudios
 
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: ¿Como Encriptar URL de PHP? Directorio de Archivos

te coloco el codigo con verificacion de logueo o sesion:

Código PHP:
Ver original
  1.      
  2.     if (isset($_SESSION['usuario']) && $_SESSION['logueado'] == true && $_SESSION['estados']== "Activo")
  3.     {
  4.         //si estan logueados o autenticados continuamos con el proceso de descarga
  5.     }
  6.     else
  7.     {
  8.         //si no estan autenticados simplementes los mando a volar y no descargan nada
  9.         header('Location:/app/error_acceso.php');
  10.    
  11.     exit;
  12.     }
  13.  
  14. //aqui continuo si el usuario esta autenticado 
  15.  
  16. //verificamos que la variable no venga vacia
  17. if (!isset($_GET['archivo']) || empty($_GET['archivo'])) {
  18.     //si viene vacia cierro el codigo y hasta aqui llega
  19.     exit();
  20. }
  21.  
  22.  //en caso contrario  asignamos la variable
  23. $archivo = $_GET['archivo'];
  24.  
  25. //ejecutamos la funcion de descarga
  26. function descarga($archivo){
  27.  
  28. //extraemos la extension del archivo
  29.  
  30. //esta parte del codigo es solo si tienes los archivos ordenados en varios directorios, en caso contrario la puedes eliminar hasta donde dice AQUI
  31. list($n, $e) = explode(".", $archivo);
  32.  
  33. //asignamos el directorio donde se encuentras esos archivos
  34. switch ($e) {
  35.   case 'rar':
  36.   $url = 'comprimidos/';
  37.   break;
  38.  
  39.   case 'doc':
  40.   $url = 'documentos/. ';
  41.   break;
  42.  
  43.   case 'pdf':
  44.   $url = 'documentos/. ';
  45.   break;
  46.  
  47.   case 'jpg':
  48.   $url = 'img/. ';
  49.   break;
  50.  
  51. }
  52. //hasta aqui eliminas AQUI
  53.  
  54. /*La siguiente linea la descomentas si eliminas lo anterior ya que todos tus archivos estan en el mismo directorio*/
  55. //$url = "directorio/";
  56.  
  57. //iniciamos el proceso de descarga
  58. $root = $url;
  59. $file = basename($archivo);
  60. $path = $root.$file;
  61. $type = '';
  62.  
  63. if (is_file($path)) {
  64.     $size = filesize($path);
  65.     if (function_exists('mime_content_type')) {
  66.         $type = mime_content_type($path);
  67.     } else if (function_exists('finfo_file')) {
  68.         $info = finfo_open(FILEINFO_MIME);
  69.         $type = finfo_file($info, $path);
  70.         finfo_close($info);  
  71.     }
  72.     if ($type == '') {
  73.         $type = "application/force-download";
  74.     }
  75.     // Generamos las cabeceras
  76.     header("Content-Type: $type");
  77.     header("Content-Disposition: attachment; filename=$file");
  78.     header("Content-Transfer-Encoding: binary");
  79.     header("Content-Length: " . $size);
  80.     // Inicia la descarga del archivo
  81.     readfile($path);
  82. } else {
  83.    
  84.     die("El Archivo no existe!!");
  85. }
  86. }

es fácil de interpretar ya que solo vas a modificar unas pocas lineas y ya estara trabajando, la ventaja, pues nadie va a saber en que directorio guardas tus archivos y nadie que no este autenticado va a poder descargar los archivos:

los enlaces los corrijo:

Código HTML:
Ver original
  1. <a href="descarga.php?archivo=tuarchivo.rar">Descargar</a>
como puedes ver en el enlace ahora no estoy colocando la ruta completa a mi archivo si no la ruta al php que va a verificar al usuario y generar la descarga sin mostrar nada adicional.

Saludos
__________________
[email protected]
HITCEL