Hej czy można nadać użytkownikom mojej strony internetowej odpowiednie "moce"? Np. zwykły user ma dostęp tylko do głównej strony internetowej, ale admin ma dostęp do głownej strony jak i panelu admina. Jak takie coś nadać?
A to zależy. Gównie od tego z czego korzystasz. Całość sprowadza się do tego, żeby sprawdzić, czy użytkownik ma daną rolę i jeżeli jej nie posiada, to przekierować go na stronę z kodem błędu 403.
Napisz coś więcej o tym czego używasz, czy jest to sam PHP, gdzie każda strona to oddzielny plik *.php
, czy masz może jakiś "core" swojej aplikacji, czy jest to popularny framework (laravel, symfony itp.).
Znaczy to mam na razie odpalone na localhoscie w xampp, wszystko jest testowe, po prostu się tak bawię, i mam jedną głowną strone na której chciałbym aby mieli wstęp uzytkownicy wszyscy, no i bedzię link na tej stronie na której ów użytkonicy bedą mogli się zarejestrować i zalogować, po logowaniu np. admina przenosi go do panelu administratora, a po logowaniu zwykłego usera po prostu go przenosi na główną strone i nic więcej
to jest czysty php, każda strona w oddzielnym pliku .php
Ogólnie, żeby napisać cały system roli, uprawnień i zabezpieczeń, to trzeba się trochę naklepać. Z tego też powodu używa się frameworków, bo one nam to ogrywają.
Nie będę Ci tutaj rozpisywał całego, skomplikowanego design'u, bo pewnie i tak na razie będzie to zbyt skomplikowane.
- Dodaj sobie do bazy, do tabelki
users
(czy gdzie ich tam trzymasz) kolumnę role (zakładam, że na razie każdy ma jedną). - Nadaj użytkownikom jakieś role np. admin, user.
- Podczas logowania wrzuć sobie tą role do sesji (albo całego użytkownika, bo zakładam, że go pobierasz)
$_SESSION['user_role'] = $user['role'];
- Na górze pliku
*.php
, do którego chcesz kontrolować dostęp dodaj taki warunek:
if ($_SESSION['user_role'] !== 'admin') {
header('Location: /index.php');
exit;
}
Jeżeli użytkownik nie ma roli admin, to zostanie przekierowany na stronę główną (która pewnie jest w pliku index.php
.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.