Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]logowanie + pobranie uprawnien
peklo
post 24.06.2015, 20:30:30
Post #1





Grupa: Zarejestrowani
Postów: 420
Pomógł: 0
Dołączył: 27.07.2011

Ostrzeżenie: (10%)
X----


witam
Mam takie szybkie pytanko odnośnie logowania z równoczesnym pobraniem uprawnień dla uzytkowników. Czy lepiej jest się najpierw zalogować coś w stylu

  1. $sql = "SELECT * FROM uzytkownicy WHERE username = :username AND password = :password";

i pobrać wszystko do sesji i na podstawie tego wykonać drugi SELECT z pobraniem uprawnień z drugiej tabeli
Czy może lepiej jest w jednym zapytaniu wykonać wszystko, logowanie + pobranie uprawnien z drugiej tabeli?

  1. $sql = "SELECT * FROM uzytkownicy us INNER JOIN akcja ak on ak.username=us.username WHERE us.username = :username AND us.password = :password";


Mam dwie tabele
uzytkownicy gdzie jest id|username|password
oraz akcja id|username|akcja gdzie akcje dodaje w pętli cos w stylu

id | usermame | akcja
1 peklo 1
2 peklo 5
3 peklo 9

gdzie akcja 1- oznacza np dodawanie, 2- usuwanie itd

Ten post edytował peklo 24.06.2015, 20:34:39
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Turson
post 24.06.2015, 20:57:04
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


W sumie to bez znaczenia.

Z jednej strony, kiedy sprawdzasz czy logowanie sie udało i od razu pobierasz role w jednym zapytaniu, to wykonujesz nadmiarowe zapytanie w przypadku, gdy logowanie się nie powiedzie (złe dane).
Z drugiej strony, wykonujesz dodatkowe zapytanie, kiedy logowanie się powiodło i pobierasz role później.

Zastanów się czy w przyszłości dodasz rolę powiedzmy "zbanowany", która nie uprawnia do logowania. Wtedy twoja druga opcja jest lepsza, bo od razu sprawdzisz czy dane są ok i czy użytkownik ma prawa do logowania.
Go to the top of the page
+Quote Post
peklo
post 24.06.2015, 21:21:16
Post #3





Grupa: Zarejestrowani
Postów: 420
Pomógł: 0
Dołączył: 27.07.2011

Ostrzeżenie: (10%)
X----


  1. $sql = "SELECT * FROM uzytkownicy WHERE username = :username AND password = :password";
  2. $stmt = $pdo->prepare( $sql );
  3. $stmt->bindValue(':username', $this->username, PDO::PARAM_STR );
  4. $stmt->bindValue(':password', hash("sha256", $this->password . $this->sol), PDO::PARAM_STR );
  5. $stmt->execute();
  6. $valid = $stmt->fetch();
  7. if( $valid ) {
  8. $success = true;
  9. $_SESSION['user']=$this->username;
  10. $_SESSION['user_id'] = $valid;
  11. }

ok to jak w tym skrypcie dodać drugie logowanie z odzielnym przetrzymywaniem uprawnień w innej tablicy?

$sql = "SELECT * FROM akcja WHERE username="$_SESSION['user_id']['username']"";

Można coś takiego w ogóle wykonać? Chodzi mi o to żeby akcje wraz z uprawnieniami były zapisane w oddzielnej tablicy coś w stylu

Array
(
[uprawnienia] => Array
(
[username] => peklo
[0] => peklo
[akcja] => 1
[1] => 1
[akcja] => 7
[2] => 7 itd
)
)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:21