Witam
Napisałem klasę która ma obsługiwać użytkownika wydaje mi się, że jest ona nieoptymalna... wstawiam ją aby ktoś z większym doświadczeniem ją obejrzał i mnie nakierował co można zrobić lepiej i co mam poprawić (IMG:
style_emoticons/default/biggrin.gif)
Klasa:
define("MySql_Host", "localhost"); define("MySql_Login", "root"); define("MySql_DbName", "test");
function removeSlashes(&$value)
{
{
}
else
{
}
}
class User{
private $id;
private $email;
private $haslo;
public $nazwa;
public $opis;
public $avatar;
public $mode;
public $urls;
private $sesja;
private $pdo;
public function __construct($email_ = null, $haslo_ = null){
$this->pdo = new PDO
('mysql:host='.MySql_Host
.';dbname='.MySql_DbName, MySql_Login
, MySql_Password
); $this->pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->email = $email_;
$this->haslo = md5(sha1
($haslo_).sha1
('TuJestSol')); }elseif(isset($_SESSION['token'])){ $this->sesja = $_SESSION['token'];
$this->Load();
}else die('Ups! Odwiedź rejestrację!'); }
private function mysql_insert($table, $inserts) {
$query = 'INSERT INTO `'.MySql_TPrefix
.$table.'` (`'.implode('`,`', $keys).'`) VALUES (\''.implode('\',\'', $values).'\')'; try{
return $this->pdo -> exec($query); }
catch(PDOException $e)
{
echo 'Wystąpił błąd biblioteki PDO: ' . $e->getMessage(); return false;
}
}
public function Rejestruj($nazwa_){
$this->nazwa = $nazwa_;
$this->mode = MODE_USER;
$stmt = $this->pdo -> query('SELECT * FROM `users` WHERE `haslo`="'.$this->haslo.'" and `email`="'.$this->email.'"');
if($stmt->fetch()) return false;
$tmp = $this->mysql_insert('users',array('nazwa'=>$this->nazwa, 'haslo'=>$this->haslo, 'email'=>$this->email, 'mode'=>$this->mode));
if($tmp)
return true;
return false;
}
public function Loguj(){
try
{
$this->sesja = $_SESSION['token'];
$this->pdo -> query('UPDATE `users` SET `sesja`="'.$_SESSION['token'].'" WHERE `haslo`="'.$this->haslo.'" and `email`="'.$this->email.'"');
}
catch(PDOException $e)
{
echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage(); return null;
}
}
public function Wyloguj(){
try
{
$this->pdo -> query('UPDATE `users` SET `sesja`="NULL" WHERE `sesja`="'.$this->sesja.'"');
}
catch(PDOException $e)
{
echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage(); return null;
}
}
public function __set($name,$value){
$this->$name($value);
}
private function Load(){
try
{
$stmt = $this->pdo -> query('SELECT * FROM `users` WHERE `sesja`="'.$this->sesja.'"');
$row = $stmt->fetch();
$stmt -> closeCursor();
$urls = $this->pdo -> query('SELECT url FROM `user_sites` WHERE `users_id`="'.$row['id'].'"');
foreach($urls as $url){
}
$urls -> closeCursor();
$this->opis = $row['opis'];
$this->avatar = $row['avatar'];
$this->nazwa = $row['nazwa'];
$this->mode = $row['mode'];
$this->id = $row['id'];
}
catch(PDOException $e)
{
echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage(); return null;
}
}
public function AddUrl($url){
$stmt = $this->pdo -> query('SELECT * FROM `user_sites` WHERE `url`="'.$url.'" and `users_id`="'.$this->id.'"');
if($stmt->fetch()) return false;
$tmp = $this->mysql_insert('user_sites',array('url'=>$url, 'users_id'=>$this->id));
if($tmp)
return true;
return false;
}
public function Opis($value){
$this->opis = $value;
try
{
$this->pdo -> query('UPDATE `users` SET `opis`="'.$this->opis.'" WHERE `sesja`="'.$this->sesja.'"');
}
catch(PDOException $e)
{
echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage(); return null;
}
}
public function Avatar($value){
$this->avatar = $value;
try
{
$this->pdo -> query('UPDATE `users` SET `avatar`="'.$this->avatar.'" WHERE `sesja`="'.$this->sesja.'"');
}
catch(PDOException $e)
{
echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage(); return null;
}
}
public function Mode($value){
$this->mode = $value;
try
{
$this->pdo -> query('UPDATE `users` SET `mode`="'.$this->mode.'" WHERE `sesja`="'.$this->sesja.'"');
}
catch(PDOException $e)
{
echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage(); return null;
}
}
}
Logowanie:
require_once('class/user.class.php');
$user = new User('test','test');
$user -> Loguj();
Update/Odczyt danych:
require_once('class/user.class.php');
$user = new User();
$user->Opis = 'adad';
$user->AddUrl ='http://wp.pl';
Wylogowanie:
require_once('class/user.class.php');
$user = new User();
$user->Wyloguj();
Struktura SQL:
CREATE TABLE IF NOT EXISTS `users` (
`id` INT NOT NULL AUTO_INCREMENT ,
`nazwa` VARCHAR(45) NULL ,
`email` VARCHAR(45) NULL ,
`haslo` VARCHAR(45) NULL ,
`opis` TEXT NULL ,
`avatar` VARCHAR(128) NULL ,
`mode` INT NULL ,
`sesja` VARCHAR(45) NULL ,
PRIMARY KEY (`id`) )
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci
PACK_KEYS = DEFAULT;
Pozdrawiam
Rav