Witam
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 = '';
if(!($this -> _isLoggin
) && isset($_POST['logEmail']) && isset($_POST['logPassword'])) {
$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);
}
}
else if(!($this -> _isLoggin
) && isset($_SESSION['isLoggin']) && $_SESSION['isLoggin'] == TRUE) {
$this -> isLoggin();
}
}
/**
* Metoda wylogowuje uzytkownika i usuwa sesję
*
* @access public
* @return void
*/
public function userLogout()
{
unset($this -> _isLoggin
); unset($this -> _idSession
); header("Location: index.php?msg=logout"); }
/**
* Metoda hashuje hasło używając podanej soli z kartoteki usera
*
* @access public
* @param string $Password
* @param string $Salt
* @return string
*/
public static function encode
($Password, $Salt) {
return hash('sha256', $Salt . hash('sha256', $Password . $Salt));
}
/**
* Metoda tworzy sól podanego hasła
*
* @access public
* @param string $Password
* @return string
*/
public static function salt
($Password) {
}
public static function timemicro
() {
return ((float) $z1 + (float) $se);
}
}
?>