Napisałem taką klasę logowania użytkownika w systemie.
Nie jest jeszcze skończona, ale chciałem prosić o ewentualne wskazanie błędów w w/w kodzie, ponieważ dopiero zaczynam OOP w php.
<?php class Login { private $_dbh; private $_config; private $_lang; private $_isLoggin = FALSE; private $_idSession; private $_email; private $_password; public function __construct($dbh, $config, $lang) { $this -> _dbh = $dbh; $this -> _config = $config; $this -> _lang = $lang; } /** * Metoda sprawdza czy user jest zalogowany w systemie * * @access public * @return bool */ public function checkLoggin() { return $this -> _isLoggin; } /** * Metoda sprawdza czy istnieją zmienne sesyjne - jeśli tak, to loguje usera w klasie * * @access public * @return bool */ protected function isLoggin() { if($_SESSION['isLoggin'] == TRUE) { $this -> _isLoggin = $_SESSION['isLoggin']; $this -> _email = $_SESSION['email']; return TRUE; } else { return FALSE; } } /** * Metoda logowania - sprawdzania czy użytkownik jest zalogowany i czy istnieją zmienne formularza logowania * Jeśli tak, to sprawdza w bazie poprawność e-mail oraz hasła i dokonuje logowania w systemie * * @access public * @return void */ public function userLogin() { $errorMsg = ''; { $sql = $this -> _dbh -> prepare('SELECT A.IdUser, A.Email, A.Password, A.Salt, A.FirstName, A.LastName, A.ErrorLogin, A.ErrorLoginTime, A.Current ' . 'FROM `users` A ' . 'WHERE A.Email=:email LIMIT 1'); $sql -> bindValue(':email', $_POST['logEmail'], PDO::PARAM_STR); $sql -> execute(); if($sql -> rowCount() > 0) { if($row = $sql -> fetch()) { if(self::encode($_POST['logPassword'], $row['Salt']) == $row['Password']) { $_SESSION['isLoggin'] = TRUE; $_SESSION['email'] = $row['Email']; $_SESSION['IdUser'] = $row['IdUser']; $this -> isLoggin(); } else { $errorMsg = $this -> _lang['errorLogin']; } } } else { $errorMsg = $this -> _lang['errorLogin']; } { throw new Exception($errorMsg); } } { $this -> isLoggin(); } } /** * Metoda wylogowuje uzytkownika i usuwa sesję * * @access public * @return void */ public function userLogout() { } /** * Metoda hashuje hasło używając podanej soli z kartoteki usera * * @access public * @param string $Password * @param string $Salt * @return string */ { return hash('sha256', $Salt . hash('sha256', $Password . $Salt)); } /** * Metoda tworzy sól podanego hasła * * @access public * @param string $Password * @return string */ { } { return ((float) $z1 + (float) $se); } } ?>