Avatar billede Fiber Bjørn Juniormester
29. april 2019 - 22:25 Der er 3 kommentarer

Adgang til filer i mappe efter login...

Hej.
Jeg har lavet til login til en side og det virker fint. Nu skal jeg have lavet mappe som ikke kan ses og ikke kan hentes filer fra uden at man eer logget ind på siden. Det må heller ikke være muligt at kunne hente filen hvis man kender linket.

Jeg har prøvet at finde noget på nettet og her uden held. Eller det vil sige at jeg har fundet noget som også virker men det er til .htaccess men jeg ville gerne kunne få adgang via PHP.

Er det muligt ????
Avatar billede arne_v Ekspert
29. april 2019 - 22:54 #1
Ja.

Ingen adgang til filerne for web serveren.

Adgang til filerne fra PHP.

Et download script download.php som checker om bruger er logegt ind.

Link til download.php?file=navnpaafil.ext
Avatar billede Fiber Bjørn Juniormester
30. april 2019 - 22:40 #2
Ok. jeg har undersøgt lidt nu efter jeg har noget at gå efter. Så har jeg fundet denne...

Så det skal jeg lige arbejde lidt videre med...


https://mohammadg.com/programming/simple-php-file-download-script/


<?php

/*
*  Download File script
*  Aurthor: Mohammad Ghasembeigi
*  Url: https://mohammadg.com
*  Usage: /download.php?file=XXXX
*
*/

ignore_user_abort(true);
set_time_limit(0); // disable the time limit for this script

if (isset($_GET[‘file’])) {
  $path_parts = pathinfo($_GET['file']);
  $file_name  = $path_parts['basename'];
  $path_to_filevault_dir = "/filevault";
 
  //Build absolute file path
  $path_to_file  = $path_to_filevault_dir . '/' . $file_name;
 
  //Check if file exists
  if (!file_exists($path_to_file)) {
   
    print '<div>Invalid file specified. Please notify the webmaster if you think this is a mistake.</div>';
    exit(1);
  }
 
  //Check if file is readable
  if (!is_readable($path_to_file)) {
    print "An error has occurred. Please notify the webmaster.";
    exit(1);
  }
 
  # detect MIME type (http://stackoverflow.com/a/32092523/1800854)
  $finfo = finfo_open(FILEINFO_MIME_TYPE);
  header('Content-Type: ' . finfo_file($finfo, $path_to_file));
 
  $finfo = finfo_open(FILEINFO_MIME_ENCODING);
  header('Content-Transfer-Encoding: ' . finfo_file($finfo, $path_to_file));

  header('Content-disposition: attachment; filename="' . basename($path_to_file) . '"');

  readfile($path_to_file);
}
else {
  print "'file' parameter is missing and is required.";
  exit(1);
}

?>
Avatar billede showsource Seniormester
04. maj 2019 - 19:40 #3
En god ting at tilføje vil være:
header("Content-Length: ".strlen($path_to_file));
inden readfile()
Så ved browseren hvor stor en fil som hentes.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester