.htaccess — PHP, ограничивающий доступ к веб-страницам

У меня есть несколько папок на моем веб-сервере.
Каждая папка содержит файлы php / html. Всего около 40 файлов.

С помощью php я могу определить личность пользователя, который в данный момент вошел в систему.

Можно ли разрешить пользователям доступ только к определенным страницам, в зависимости от того, в кого они вошли?

Мне подумалось, может .htaccess позволит это? Или есть ли способ получше?

Я действительно не хочу начинать создавать сценарий аутентификации пользователя / пароля.

Спасибо

0

Решение

Используя сеансы, вы можете создавать пользовательские уровни и ограничивать доступ к различным областям, назначая пользовательские уровни SESSION переменные. Предположительно, так как, цитата Using php I can determine the identity of the user who is currently logged in.У вас есть возможность установить переменные сеанса. Я считаю, что это известно как контроль доступа на основе ролей — в очень простой форме

if ($_SESSION['user_level'] == "Administrator") {
# do something
}

Эта статья может помочь в дальнейшем

4

Другие решения

Вы можете сделать что-то подобное в вашем .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.");
}
1

Вы не можете получить прямой доступ СЕССИЯс из .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]

* Также обратите внимание, что вы должны создать простой скрипт, чтобы проверить, являются ли созданные файлы более действительными, если нет, то удалите их.

* Это просто идея!

0
По вопросам рекламы [email protected]