![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 004 Pomógł: 9 Dołączył: 18.01.2011 Skąd: Siedlce Ostrzeżenie: (30%) ![]() ![]() |
Witam, mam pewną klasę w niej obiekt pdo (uprzedzając podpowiedzi:)) i pewną funkcję, która odpowiada za sprawdzanie czy w bazie istnieje dany user czy nie jednak coś nie śmiga...
jak to "usprawnić" ? Dzięki z góry! |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 4 Dołączył: 27.01.2012 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Przede wszystkim PDO jest po to, żeby uniknąć czystych zapytań MySQL, czyli powinno być coś w stylu:
$this->check_data = $this->pdo->select('users') ->fields(array('mail', 'haslo')) ->andWhere('mail = ?', $this->login) ->andWhere('haslo = ?', $this->password); W ten sposób uzyskujesz minimum bezpieczeństwa. W swoim skrypcie masz bardzo poważny problem z SQJ injection. Dodatkowo nie powinieneś mieć $this->login i $this->password tylko przekazać np obiekt usera i mieć $user->login i $user->password . Byłoby super gdyby było to pobierane przez metody np. $user->getLogin(), oraz $user->getPassword(). Przy czym password pamiętaj, że powinno być szyfrowane, czyli po zbindowaniu z formularza logowania ustawiasz najlepiej plainPasswod, które jest później konwertowane. Za dużo w ogole operujesz na properiesach. Nie musisz ustawiac wszystkiego jako nowe pola w klasie. To bez sensu. Metoda ma zwócić tylko informację czy użytkownik może się zalogować czy nie. Przy czym return "wszystko ok"; raczej odpada. Daj return !empty($this->check_data) - zwróci true, albo false. Pomijasz wtedy w ogóle ifa. Dodatkowo z tego co widzę to metoda nazywa się login.. przy czym nie loguje użytkownika tylko sprawdza czy istnieje w bazie danych. Powinna się nazywać zupełnie inaczej np. userExists($login, $password) i być wywoływaną przez login gdzie będzie ustawiana sesja. Trochę chaotycznie, ale zawsze (IMG:style_emoticons/default/smile.gif) Najlepiej wrzuć na githuba (IMG:style_emoticons/default/smile.gif) Zapraszam też do głosowania na agendę http://www.phpcon.pl/2013/pl/agenda (IMG:style_emoticons/default/smile.gif) Piotr Pasich Ten post edytował piotr.pasich 7.08.2013, 20:10:22 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 15:46 |