Mam plik php, który działa jako strażnik dla wszystkich plików, które chcę, aby ludzie pobierać, którzy mają wystarczającą ilość uprawnień.Jak zezwolić użytkownikom z wymaganymi uprawnieniami na pobranie pliku przez php?
Kod używam wrzucić plik do użytkownika jest
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header("Content-disposition: attachment; filename=\"".$public_filename."\"");
header("Content-Transfer-Encoding: Binary");
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header("Content-length: ".$f_filesize);
readfile($file_path);
Większość plików są dość duże .... 400mb-10GB.
Jaki byłby dobry sposób, aby to zrobić i zachować prawdziwe lokalizacje + nazwy plików w tajemnicy, więc ludzie nie mogą po prostu link do plików bezpośrednio, ale MUSZĄ się połączyć przez mój download.php? File = ID gatekeeper?
Dzięki
EDIT: Im nie pytając, jak to zrobić uwierzytelnianie użytkownika, wszystko, co jest zrobione. Po prostu pytam, czy mój sposób robienia tego jest dobrym pomysłem na dużą skalę. Wygląda na to, że może to spowodować problemy z pamięcią, jeśli będę nadal czytał pliki o pojemności 10 GB.
Myślę, że możesz nawet rozłączyć plik (tutaj, link) po kilku sekundach, będę pracował dla bieżącego pobierania. Tak jak możesz utworzyć plik, otwórz go, usuń, a następnie przeczytaj. – Aif
Nie wiedziałem tego, fajnie! Musisz sprawdzić, jak to działa w przypadku przerwania i wznawiania pobierania przez użytkowników. (Z plikami tak dużymi, że możemy założyć, że pobieranie zostanie przerwane?). – 0scar
Możesz także przechowywać tokena w ciasteczkach i mieć reguły przepisywania, które przekształcą plik cookie w ścieżkę do pliku. Możesz uzyskać ładne adresy URL z oryginalnymi nazwami plików i pokazać skrypt PHP, jeśli plik cookie nie jest ustawiony lub dowiązanie symboliczne już nie istnieje. – Ski