У меня есть несколько папок на моем веб-сервере.
Каждая папка содержит файлы php / html. Всего около 40 файлов.
С помощью php я могу определить личность пользователя, который в данный момент вошел в систему.
Можно ли разрешить пользователям доступ только к определенным страницам, в зависимости от того, в кого они вошли?
Мне подумалось, может .htaccess
позволит это? Или есть ли способ получше?
Я действительно не хочу начинать создавать сценарий аутентификации пользователя / пароля.
Спасибо
Используя сеансы, вы можете создавать пользовательские уровни и ограничивать доступ к различным областям, назначая пользовательские уровни SESSION
переменные. Предположительно, так как, цитата Using php I can determine the identity of the user who is currently logged in.
У вас есть возможность установить переменные сеанса. Я считаю, что это известно как контроль доступа на основе ролей — в очень простой форме
if ($_SESSION['user_level'] == "Administrator") {
# do something
}
Вы можете сделать что-то подобное в вашем .htaccess:
RewriteEngine On
RewriteBase /
RewriteRule ^(.+?\.php)$ index.php?p=$1 [L,QSA,NC]
Это перенаправит всех пользователей, пытающихся просмотреть страницу PHP, на index.php?p=someurl.php
Затем в вашем index.php вы можете определить, есть ли у пользователя разрешение на просмотр файла, и если они действительно его обслуживают, если нет, то отрицают его.
if ( authorized() ) {
// show file
} else {
die("Not Authorized to Access this File.");
}
Вы не можете получить прямой доступ СЕССИЯс из .Htaccess правила, но вы можете попробовать обходной путь, если вы не хотите кодировать.
В разделе кода авторизации в последних строках после сеанса добавьте touch()
создать имя файла текущего идентификатора сеанса пользователя:
touch("./folder/logged/PHPSESSID_".session_id());
Тогда внутри вашего .Htaccess попытайтесь проверить, был ли создан текущий файл, связанный с PHPSESSID:
RewriteCond %{HTTP_COOKIE} PHPSESSID=(\w+)
RewriteCond %{DOCUMENT_ROOT}/folder/logged/PHPSESSID_%1 -f
RewriteRule ^(.*)$ $1
RewriteRule .* /users/login [L]
* Также обратите внимание, что вы должны создать простой скрипт, чтобы проверить, являются ли созданные файлы более действительными, если нет, то удалите их.
* Это просто идея!