У меня полнофункциональная система входа в систему, и я держу пользователя, вошедшего в систему по его идентификатору, в переменной сеанса $ _SESSION [‘user_id’].
Я хотел бы использовать этот идентификатор, чтобы разрешить им просматривать определенные файлы.
Я знаю, что могу использовать базу данных MySQL для хранения информации о том, авторизованы ли они для просмотра определенного файла, а затем сверять свой идентификатор с базой данных при доступе к ней через веб-страницу, например, file.php с контейнером на странице, но как мне помешать кому-то узнать, что такое URL файла (например, /files/file.pdf) и перейти к нему в браузере и просмотреть его таким образом?
Я знаю, что должен быть способ, но мои знания явно ограничены.
Любая помощь будет оценена.
Спасибо
Коннор Уайетт
Согласно запросу OP.
Разместите свои файлы за пределами общедоступной области HTML.
$file = "/var/user/you/outside_folder/file.xxx";
Тип вещи.
«ты можешь использовать ReadFile из вашего скрипта, если пользователь авторизован
Предложение Банси об использовании readfile
хороший метод
В соответствии с примером на этой странице:
$filename = "file.csv";
$filepath = "/path/to/file/" . $filename;
Из примера № 1
<?php
$file = 'monkey.gif';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
?>
где $file = 'monkey.gif';
можно изменить следующим образом:
$file = '/var/user/you/outside_folder/monkey.gif';
Других решений пока нет …