Panel administratora

0

Witam. Tworzę sklep internetowy. Czy jest jakiś skuteczniejszy sposób na przekierowanie do panelu administratora, jak zawarunkowanie podczas tworzenia sesji użytkownika, gdy nazwa użytkownika będzie 'admin' to przekieruj na strona_admin.php, w innym wypadku na strona.php. ?

0

Tak.

W sklepie internetowym chyba chciałbyś mieć możliwość edycji produktu w tym samym miejscu, gdzie widzi go użytkownik?
1) Poszukaj sobie jakiegoś mechanizmu tworzenia szablonów stron z dziedziczeniem - np. dla Pythona, Django ma coś takiego. W PHP np. http://phpti.com/ - będziesz mógł dla admina dodać narzędzia edycji do stron widzianych przez użytkownika.
2) Nie powinieneś uzależniać uprawnień od nazwy użytkownika. Uprawnienia użytkownika powinieneś zapisać w tabeli z użytkownikami. Używanie loginu admin jest niebezpieczne - bo wtedy włamywaczowi wystarczy brute force hasła dla tego loginu.
3) Poczytaj sobie o ACL (Access Control List). Poza tym nie pisz w gołym PHP, skorzystaj z jakiegoś frameworka lub nawet CMS'a, który prawdopodobnie ten problem rozwiąże za Ciebie ;)

0

Pierwsze słyszę o PHP TI, możesz mi coś więcej o nim powiedzieć? najlepiej porównując go do MVC.

0

Szablony służą do prezentacji danych - czyli view. Dzięki mechanizmowi dziedziczenia szablonów możesz zrobić szablon strony dla zwykłego użytkownika oraz dziedziczący po nim szablon dla admina z dodatkowymi opcjami -> np. przycisk usuń przedmiot, pola edycji, przycisk przekierowujący do panelu admina itp.

Możesz użyć dowolnego systemu szablonów (mój kolega nawet pisał własny ;) ). Chodzi o ideę, żeby nie klonować tych samych danych, czy dodawać nie wiadomo ile include'ów.

Nie korzystałem z takich rzeczy w PHP, ale w Pythonie + Django ładnie można było nanieść na szablon dane z aplikacji na szablon korzystając z obiektu dziennika (dictionary).

Na stronie PHP TI masz przykłady zastosowania, poczytaj. Poczytaj też o Django jak chcesz ;) - https://docs.djangoproject.com/en/1.10/ref/templates/api/

0

Rozumiem, lecz tak sobie teraz myślę, że i tak muszę zrobić osobną stronę dla admina i weryfikację admina od pozostałych użytkowników, a dziedziczyć napisane już skrypty usuwania i dodawania produktów. Do tej pory dziedziczyłem wszystkie metody które napisałem do plików php wyświetlających skrypt.

2

Weź Ty się lepiej zainteresuj frameworkiem albo przynajmniej przejrzyj rozwiązania w nich użyte. Ty chcesz to sprawdzać po nazwie użytkownika? A jak admin ma inną nazwę użytkownika? Od takich rzeczy to są role (osobna tabela w bazie danych) i sprawdzanie czy użytkownik ma prawa admina czy też jest po prostu zarejestrowanym tylko użytkownikiem.

Np. takie tabele:

CREATE TABLE IF NOT EXISTS `roles` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar(32) NOT NULL,
  `description` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `uniq_name` (`name`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

INSERT INTO `roles` (`id`, `name`, `description`) VALUES(1, 'login', 'Login privileges, granted after account confirmation');
INSERT INTO `roles` (`id`, `name`, `description`) VALUES(2, 'admin', 'Administrative user, has access to everything.');

CREATE TABLE IF NOT EXISTS `roles_users` (
  `user_id` int(10) UNSIGNED NOT NULL,
  `role_id` int(10) UNSIGNED NOT NULL,
  PRIMARY KEY  (`user_id`,`role_id`),
  KEY `fk_role_id` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `email` varchar(254) NOT NULL,
  `username` varchar(32) NOT NULL DEFAULT '',
  `password` varchar(64) NOT NULL,
  `logins` int(10) UNSIGNED NOT NULL DEFAULT '0',
  `last_login` int(10) UNSIGNED,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `uniq_username` (`username`),
  UNIQUE KEY `uniq_email` (`email`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;      

I każdy użytkownik będzie miał swoją rolę, w tabeli roles_users.

Podejrzewam że ucząc się samodzielnie to minie jeszcze duuużo czasu zanim zrobisz to na jakimś przyzwoitym poziomie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0