Logowanie do systemu CMS

0

Witam.

Napisałem klasę która obsługuje user'ow:

class UserManager {
    
    protected $login;
    protected $password;
    
    public function LogIn($LOGIN, $PASSWORD) {
        
        $this->login = $LOGIN;
        $this->password = md5($PASSWORD);
        
        if(self::isExist() && count(self::isExist()) > 0) {
            
            self::log_in();
            return $this->login;
            
        } else {
            
            return false;
            
        }
        
    }
    
    protected function isExist() {
        
        $arr = DatabaseManager::selectBySQL("SELECT * FROM users WHERE username = '{$this->login}' AND password = '{$this->password}' LIMIT 1");
        return $arr;
        
    }
    
    protected function log_in() {
        
        $_SESSION['login'] = $this->login;
        $_SESSION['logged'] = true;
        
    }
    
    public function LogOut() {
        
        $_SESSION['login'] = false;
        $_SESSION['logged'] = false;
        
        session_destroy();
        
    }
    
}

Przekazuje do tej metody naturalnie "$_POST['login'] oraz $_POST['password']" ale mimo wszystko nie mogę się zalogować na CMS czy mógłby ktoś mi pomóc?

0

1.Login, Logout, ponieważ to jeden wyraz + doesExist jak już.
2.To nienaturalne, aby funkcja doesExist zwracała jakąś liczbę, nie uważasz? Poza tym po co tam limit? W jakim wypadku to zapytanie i tak zwróci coś więcej niż zero lub jeden rekord?
3.self::log_in(); - self::, huh?
4.Masz Login oraz log_in, straszna niekonsekwencja w nazewnictwie. Tę drugą nazwij po ludzku createSession, a Logout - destroySession.
5.Funkcja Login niech zwraca true/false, a nie login użytkownika/false...
6.UserManager brzmi raczej jak klasa zarządzająca użytkownikami. KISS i nazwij ją User.

0

Używaj jakieś konwencji z góry ustalonej. Nie możesz pisać raz metodę z dużej litery, a znów kolejną z małej. Poczytaj sobie o standardzie PSR-0 ( http://www.php-fig.org/psr/psr-0/ ) , mniej więcej, w największym skrócie: Nie używasz underscore'a ( to ten znaczek _ ) , nazwę klas zaczynasz z duzej litery, natomiast metody z małej. Tak samo zmienne.

Kolejną rzeczą to SQL injection. Nie możesz bezpośrednio do zapytania SQL wstrzykiwać danych. Musisz to robić przez jakiś escaper (który zapobiegnie wstrzyknięcia cudzysłowów)

0

Tutaj masz wspomniane standardy po polsku:
https://github.com/php-fig/fig-standards
Naprawdę warto zapoznać się z nimi i stosować. Wkrótce sam docenisz zalety...

[Mirek]

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