Witam
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')),
'data' => date('Y-m-d h:m:s'), '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) {
$this->_model_users
->update(array('aktywny'=>1
), array('id'=>$id))); $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",
array(':login' => $login)); return $data[0]->haslo;
}
public function getID($login){
$data = $this->_db->select("SELECT id FROM ".DB_PREFIX."users WHERE login = :login",
array(':login' => $login)); return $data[0]->id;
}
public function checkToken($token){
$data = $this->_db->select("SELECT id FROM ".DB_PREFIX."users WHERE token = :token",
array(':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);
}
}