Dopiero uczę się obiektowości i chcę napisać sobie lekki framework MVC, na potrzeby prostych stron z systemem CMS.
Napisałem system rejestracji użytkownika, aktywacji konto i logowania, chodzi o ocenę tego przez doświadczone osoby, czy dobrze rozumiem MVC.
<?php namespace Controllers; use Core\View; use Core\Controller; use Helpers\Session; use Helpers\Url; use Helpers\Token; use Helpers\ClientIP; use Helpers\Password; class Users extends Controller { private $_model_users; public function __construct() { parent::__construct(); $this->_model_users = new \Models\Users(); } public function logowanie() { $data['meta_title'] = 'Zaloguj się'; $data['meta_description'] = 'Logowanie w ...'; View::render('users/logowanie', $data); } public function rejestracja() { if (Session::get('loggedin')) { Url::redirect(URL_ZALOGOWANY); } $data['meta_title'] = 'Zarejestruj się'; $data['meta_description'] = 'Rejestracja w ...'; View::render('users/rejestracja', $data); } public function zalogowany() { if (!Session::get('loggedin')) { Url::redirect(URL_LOGOWANIE); } $data['meta_title'] = 'Zalogowany'; View::render('users/zalogowany', $data); } public function loguj() { if (Session::get('loggedin')) { Url::redirect(URL_ZALOGOWANY); } $FiltrujZmienna = new \Helpers\FiltrujZmienna(); $email = $FiltrujZmienna->postStr('email'); $haslo = $FiltrujZmienna->postStr('haslo'); Session::set('blad_logowanie', 'Podaj e-mail i hasło'); Url::redirect(URL_LOGOWANIE); } elseif (Password::verify($haslo, $this->_model_users->getHaslo($email)) == false) { Session::set('blad_logowanie', 'Błędny email lub hasło'); Url::redirect(URL_LOGOWANIE); } if (!$error) { Session::set('loggedin', true); Session::set('userID', $this->_model_users->getID($email)); Url::redirect(URL_ZALOGOWANY); } } public function wyloguj() { Session::destroy(); Url::redirect(); } public function rejestruj() { $FiltrujZmienna = new \Helpers\FiltrujZmienna(); if ($this->_model_users->getID($FiltrujZmienna->postStr('email')) > 0) { Session::set('blad_rejestracja','<br /><div style="color:red;">Istnieje już taki e-mail w systemie, podaj inny adres e-mail.</div><br />'); Url::redirect(URL_REJESTRACJA); } else { 'token' => Token::get(15), 'imie' => $FiltrujZmienna->postStr('imie'), 'nazwisko' => $FiltrujZmienna->postStr('nazwisko'), 'login' => $FiltrujZmienna->postStr('email'), 'haslo' => Password::make($FiltrujZmienna->postStr('haslo')), 'ip' => ClientIP::get(), 'aktywny' => '0' ); $this->_model_users->insert($dane); Url::redirect(URL_ZAREJESTROWANY); } } public function zarejestrowany() { $data['meta_title'] = 'Zarejestrowany'; $data['meta_description'] = ''; View::render('users/zarejestrowany', $data); } public function aktywacja($token) { $FiltrujZmienna = new \Helpers\FiltrujZmienna(); $id = $this->_model_users->checkToken($FiltrujZmienna->Str($token); if ($id > 0) { $data['aktywacja_yes'] = 1; $data['aktywacja_not'] = 0; } else { $data['aktywacja_yes'] = 0; $data['aktywacja_not'] = 1; } View::render('users/aktywacja', $data); } }
<?php namespace Models; class Users extends \Core\Model{ public function __construct(){ parent::__construct(); } public function getHaslo($login){ $data = $this->_db->select("SELECT haslo FROM ".DB_PREFIX."users WHERE login = :login", return $data[0]->haslo; } public function getID($login){ $data = $this->_db->select("SELECT id FROM ".DB_PREFIX."users WHERE login = :login", return $data[0]->id; } public function checkToken($token){ $data = $this->_db->select("SELECT id FROM ".DB_PREFIX."users WHERE token = :token", return $data[0]->id; } public function insert($array){ return $this->_db->insert(DB_PREFIX.'users',$array); } public function update($array, $where){ return $this->_db->update(DB_PREFIX.'users',$array, $where); } }