pierwszy class.login.php:
<?php require_once('class.DB.php'); require_once('class.validator.php'); require_once('class.config.php'); class login{ protected $login; protected $password; private function __construct(){ $config = config::singleton(); } $c = __CLASS__; self::$instance = new $c(); } return self::$instance; } public function checkLoginData(){ $validator = validator::singleton(); if(!$validator->validatePassword($this->password)){ return false; }else if(!$validator->validateLogin($this->login)){ return false; }else{ $db = DB::singleton(); $query = "SELECT COUNT(*) AS COUNT FROM `ADMIN` WHERE `PASSWORD` = '$pass'"; }else{ $query = "SELECT COUNT(*) AS COUNT FROM `USERS` WHERE LOWER(`LOGIN`) = LOWER('$this->login') "; $query .= "AND `PASSWORD` = '$pass'"; }; $db->send_query($query); $error = $db->isQueryError(); if($error === false){ $row = $db->getRow(); if($row['COUNT'] == 1){ return true; }else{ return false; }; }else{ return $error; }; }; } public function isActive(){ $db = DB::singleton(); $query = "SELECT `ACTIVATED` FROM `USERS` WHERE LOWER(`LOGIN`) = LOWER('$this->login')"; $db->send_query($query); $row = $db->getRow(); if($row['ACTIVATED'] == 1) return true; else return false; } public function isBanned(){ $db = DB::singleton(); $query = "SELECT `BANNED` FROM `USERS` WHERE LOWER(`LOGIN`) = LOWER('$this->login')"; $db->send_query($query); $row = $db->getRow(); if($row['BANNED'] == 1) return true; else return false; } public function login(){ if($this->checkLoginData()){ $_SESSION['logged'] = true; $_SESSION['login'] = 'Admin'; }else{ $db = DB::singleton(); $query = "SELECT `LOGIN` FROM `USERS` WHERE LOWER(`LOGIN`) = LOWER('$this->login')"; $db->send_query($query); $row = $db->getRow(); $query = "UPDATE `USERS` SET `LASTLOGIN` = $time WHERE `LOGIN` = '".$row['LOGIN']."'"; $db->send_query($query); if($db->isQueryError() === false){ $_SESSION['logged'] = true; $_SESSION['login'] = $row['LOGIN']; return true; }else{ return $db->isQueryError(); }; }; }else{ return ''; }; } public function isLogged(){ } public function logout(){ } public function isAdmin(){ if(!empty($_SESSION['login']) && $_SESSION['login'] == 'Admin' && $_SESSION['logged'] === true) return true; else return false; } public function showAccount(){ if($this->isLogged()){ if($this->isAdmin() == true) { return '<div class="center"><a href="index.php?p=10&action=change_passw_form">Zmiana hasła</a></div>'; }; $login = $this->getLogin(); $query = "SELECT COUNT(*) AS COUNT FROM `USERS` WHERE LOWER(`LOGIN`) = LOWER('$login')"; $db = DB::singleton(); $db->send_query($query); $error = $db->isQueryError(); if($error === false){ $row = $db->getRow(); if($row['COUNT'] == 1){ $query = "SELECT * FROM `USERS` WHERE LOWER(`LOGIN`) = LOWER('$login')"; $db->send_query($query); if($db->isQueryError() === false){ $row = $db->getRow(); $table = '<div class="center"> <table style="margin:20px auto;"> <tr> <td><div class="right">Login : </div></td> <td><div class="left">'.$row['LOGIN'].'</div></td> </tr> <tr> <td><div class="right">Email : </div></td> <td><div class="left">'.$row['EMAIL'].'</div></td> </tr> <tr> <td><div class="right">Imię : </div></td> <td><div class="left">'.$row['NAME'].'</div></td> </tr> <tr> <td><div class="right">Płeć : </div></td> <td><div class="left">'; if($row['SEX'] == 1) $table .= 'Mężczyzna'; else $table .= 'Kobieta'; $table .= '</div></td> </tr> <tr> <td><div class="right">Data urodzenia : </div></td> </tr> <tr> <td><div class="right">Skąd : </div></td> <td><div class="left">'.$row['CITY'].'</div></td> </tr> <tr> <td><div class="right">Konto utworzono : </div></td> </tr> <tr> <td><div class="right">Ostatnie logowanie : </div></td> </tr> <tr> <td colspan="2"><div class="center"><a href="index.php?p=10&action=edit_account_form">Edycja danych</a> | <a href="index.php?p=10&action=change_passw_form">Zmiana hasła</a></div></td> </tr> </table></div>'; return $table; }else{ return $db->isQueryError(); }; }else{ return '<div class="error">W bazie nie ma takiego użytkownika</div>'; }; }else{ return $error; }; }else{ return '<div class="error">Nie jesteś zalogowany</div>'; }; } public function showLoginForm(){ return ' <div class="center"> <form action="index.php?p=10&action=login" method="post"> <table style="margin:50px auto;"> <tr><td class="right">Login: </td><td><input type="text" maxlength="30" name="login" class="gb_sygnature" /></td></tr> <tr><td class="right">Hasło: </td><td><input type="password" maxlength="30" name="password" class="gb_sygnature" /></td></tr> <tr><td colspan="2" class="right"><input type="submit" value="Zalogój" class="submit" /></td></tr> </table> </form> </div>'; } }; ?>
i teraz jak uzeywam $this->login(); to on ustwaia zmienne sesji $_SESSION['logged']=1 i $_SESSION['login']='Admin' . Gorzej sie robi kiedy przechodze do innej strony np na ktorej moge zaobaczyc dane mojego konta. No i na tej stronie kiedy sprawdzam czy admin funkcja isAdmin(); to print_r($_SESSION); wyswietla takie cos:
Kod
Array ( [logged] => 1 [login] => login Object ( [login:protected] => [password:protected] => ))
Zupelnie nie wiem co sie dzieje nigdy ni przypisywalem zmiennej sesyjnej obiektu jakiegokolwiek. Powinno byc 'Admin' a nie obiekt w tej zmiennej sesyjnej. Moze ktos wie co jest z tym nie tak.ehh cos zle dziala kolorowanie skladni polowe mi ucielo drogiego pliku login.php i jeszcze jakas sieczke na ekranie wiec ga nie wypisze tutaj :/
edit: ehh udalo mi sie rozwiazac ten problem zaczalem uzywac $_SESSION['user_login'] zamiasta $_SESSION['login']; teraz przy sprawdzaniu czy admin print_r() wyswietla takie cos:
Kod
Array ( [logged] => 1 [login] => login Object ( [login:protected] => [password:protected] => ) [user_login] => Admin )
nie wiem czemu tam ciagle jest obiekt przypisany do zmiennej sesyjnej. Moze ktos wie czemu tak jest i czy to czase nie jest wina php bo ja tego obiektu nie przypisywalem do zmiennej sesyjnej??