Надо, чтобы доступа к папке с файлами вообще не было. Когда вводим адрес файла, производится вызов PHP-скрипта. Если авторизации нет, скрипт производит редирект на страницу авторизации. А если пользователь залогинен, то скрипт читает содержимое файла и передаёт его браузеру - предварительно установив нужные заголовки.
Документация: http://php.net/manual/ru/function.header.php, пример # 1.
PHP
как обычно через PHP закрывается или открывается доступ к заданным папкам и содержимому?
Алексей Морозов
вроде получилось. простое и удобное решение. только пришлось помудрить с заголовками.
ну делают примерно так.
на самом деле никаких папок не сервере нет: есть лишь одна единственная точка входа. например, index.php, который в зависимости от прав и полномочий пришедшего на сайт пользователя показывает или не показывает ему информацию. Для этого нужна еще определенная настройка веб-сервера.
Сегодня в большинстве случаев не пишут на чистом php, используют различные фреймворки. И в каждом есть модули для т. н. роутинга, то бишь, какие методы или классы вызывать для тех или иных параметров. Описание роутинг выглядит примерно так
$framework->route('GET /@status/@action/@item', 'routes->show');
фреймворк не только вызывает класс routes, метод show, но еще и инициализирует переменные $status, $action, $item (значения могут быть разные)
В методе show анализируются эти переменные и исполняется соответствующий код. Вот так получается, что для projects/add/new ($action равно 'add', $item - new), а для projects/delete/1 (action='delete', $item=1)...
Естественно для каждого действия $action надо проверять полномочия текущего пользователя - имеет ли он право что-то добавлять, менять или удалять. И отказывать ему в неверных действиях.
В общем, примерно так сегодня функционируют сайты.
на самом деле никаких папок не сервере нет: есть лишь одна единственная точка входа. например, index.php, который в зависимости от прав и полномочий пришедшего на сайт пользователя показывает или не показывает ему информацию. Для этого нужна еще определенная настройка веб-сервера.
Сегодня в большинстве случаев не пишут на чистом php, используют различные фреймворки. И в каждом есть модули для т. н. роутинга, то бишь, какие методы или классы вызывать для тех или иных параметров. Описание роутинг выглядит примерно так
$framework->route('GET /@status/@action/@item', 'routes->show');
фреймворк не только вызывает класс routes, метод show, но еще и инициализирует переменные $status, $action, $item (значения могут быть разные)
В методе show анализируются эти переменные и исполняется соответствующий код. Вот так получается, что для projects/add/new ($action равно 'add', $item - new), а для projects/delete/1 (action='delete', $item=1)...
Естественно для каждого действия $action надо проверять полномочия текущего пользователя - имеет ли он право что-то добавлять, менять или удалять. И отказывать ему в неверных действиях.
В общем, примерно так сегодня функционируют сайты.
Ну в самом простом случае в .htacess пишешь Deny from all а авторизуешь через пхп и если права юзера подходят то листаешь папку показываешь файлы либо если совсем не хочется заморачиваться с авторизацией то генеришь файл с юзерами .htpasswd группу admins и в .htaccess пишешь такую байду :
AuthType Basic
AuthName "Private zone. Only for administrator!"
AuthUserFile /usr/host/mysite/.htpasswd
AuthGroupFile /usr/host/mysite/group
require group admins
Но это только для апача на нгинксе конвертером соответственно сконвертировать можно в родной конфиг
А вообще это считается хреновая авторизация т к дырявая медленная и т п
AuthType Basic
AuthName "Private zone. Only for administrator!"
AuthUserFile /usr/host/mysite/.htpasswd
AuthGroupFile /usr/host/mysite/group
require group admins
Но это только для апача на нгинксе конвертером соответственно сконвертировать можно в родной конфиг
А вообще это считается хреновая авторизация т к дырявая медленная и т п
Алексей Морозов
это уже давно пройдено и забыто. в данном случае речь идет про динамические страницы.
Похожие вопросы
- Здравствуйте, каким методом лучше проверять на PHP правильность открывающихся и закрывающихся скобок в строке?
- Как спарсить страницы с помощью PHP (адрес страниц тот же, но содержимое разное в зависимости от введённого логина)?
- В папку с сайтом надо загрузить index.php, но там уже есть index.html. Когда они там вместе, сайт не работает
- PHP Polling ChatGPT
- Не работает PHP include на хостинге
- Как оптимизировать структуру сайта php. на готовом шаблоне
- Хеширование пароля php
- Подскажите хороший курс по PHP практике?
- Пишу авторизацию (php). Куки не работают
- Вопрос начинающего программиста Python\PHP