Witam,
jestem początkujący w OOP i postanowiłem napisać własną klasę logowania. Poniżej kod klasy i jej użycie. Proszę o opinie, uwagi, będę wdzięczny. Nie wiem czy dobrze rozumię niektóre aspekty oop stąd moje zapytanie.
Dzięki.
// użycie klasy na stronie poniżej, pomijam formularz logowania HTML, jedynie kod PHP wklejam:
<?php
$log = new Authorization();
$log->setUser($user);
$log->setPassword($password);
$log->Login();
?>
Kod klasy:
<?php
class Authorization {
private $_user;
private $_password;
private $_dbpdo;
public function __construct() {
try
{
$pdo = new PDO('mysql:host='.$db["Host"].';dbname='.$db["Name"], $db["User"], $db["Password"]);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->_dbpdo = $pdo;
}
catch(PDOException $error)
{
echo $error->getMessage(); }
}
public function setUser($user) {
$this->_user = $user;
}
public function setPassword($password) {
$this->_password = $password;
}
public function getUser() {
return $this->_user;
}
public function getPassword() {
return $this->_password;
}
public function validateUsr() {
if ( ($this->getUser())=='' || ($this->getPassword())=='' ) {
echo '<p class="errorMsg">Wprowadź login i hasło!</p>'; }
}
public function checkIsUsr() {
$password = @md5($this->getPassword()); $sql = $this->_dbpdo->prepare("SELECT * FROM users WHERE login=:user AND password=:password LIMIT 1");
$sql->bindValue(':user',$this->getUser(),PDO::PARAM_STR);
$sql->bindValue(':password',$password,PDO::PARAM_STR);
$sql->execute();
if ($row = $sql->fetch()) {
return array($row['id'], $row['login']); } else {
echo '<p class="errorMsg">Nieprawidłowy login i/lub hasło!</p>'; }
$sql->closeCursor();
}
public function Login() {
$this->validateUsr();
$data_user = $this->checkIsUsr();
$_SESSION['id_usr'] = $data_user[0];
$_SESSION['login_usr'] = $data_user[1];
ini_set('session.cookie_httponly', 1
); }
}
?>
Ten post edytował dopelganger 21.08.2013, 09:20:11