Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]logowanie + pobranie uprawnien
Forum PHP.pl > Forum > Przedszkole
peklo
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
Turson
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.
peklo
  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
)
)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.