Witam
Długo się przymierzałem do wyboru jakiegoś FW i trafiło w końcu na CI. Na początek postanowiłem więc pobawić się w prościutki system do autoryzacji. Jako że jest to moje pierwsze podejście do FW to prosiłbym o info czy w ogóle idę w dobrym kierunku. Mam nadzieję, że to dobre miejsce na tego typu temat

Kontrolery
class Main extends CI_Controller
{
public function index()
{
$data['title'] = 'Ogłoszenia | ver 0.1b';
$data['link']['main'] = anchor(base_url(),'strona główna');
if($this->session->userdata('s_loggedin')==FALSE)
{
$data['link'][] = anchor('/user/login', 'zaloguj');
$data['link'][] = anchor('/user/register', 'zarejestruj konto');
}
else
{
$data['link'][] = anchor('/user', 'panel użytkownika');
$data['link'][] = anchor('/user/logout', 'wyloguj');
}
$this->load->view('template.php',$data);
}
}
class User extends CI_Controller
{
/*
* Konstruktor glownie po to, zeby zaladowac model
*/
function __construct()
{
parent::__construct();
$this->load->model('user_model');
}
/*
*
*/
public function index()
{
if($this->session->userdata('s_loggedin')==FALSE)
{
redirect('/user/login', 'location');
}
$query = $this->user_model->get_user_by_id($this->session->userdata('s_userid'));
if($query->num_rows()==1)
{
$data['user'] = $query->row();
$this->load->view('user.php', $data);
}
else
{
redirect('/user/register','location');
}
}
/*
* LOGOWANIE
*/
public function login()
{
if($this->session->userdata('s_loggedin')==TRUE)
{
redirect('/user', 'location');
}
$this->form_validation->set_rules('username', 'Login', 'trim|required|min_length[5]|maxlength[15]|alpha_numeric');
$this->form_validation->set_rules('password', 'Hasło', 'trim|required|alpha_numeric|md5|min_length[5]');
if($this->form_validation->run()==TRUE)
{
$query = $this->user_model->get_logindata($this->input->post('username'),$this->input->post('password'));
if($query->num_rows()==1)
{
$data = $query->row();
's_userid' => $data->user_id,
's_username' => $data->user_name,
's_loggedin' => TRUE
);
$this->session->set_userdata($s_data);
redirect('/user', 'location');
}
else
{
redirect('/user/login', 'location');
}
}
else
{
$this->load->view('form_login');
}
}
/*
* WYLOGOWANIE
*/
public function logout()
{
if($this->session->userdata('s_loggedin')==TRUE)
{
$this->session->sess_destroy();
redirect('/user', 'location');
}
else
{
redirect('/user/login', 'location');
}
}
/*
* REJESTRACJA
*/
public function register()
{
if($this->session->userdata('s_loggedin')==TRUE)
{
redirect('/user', 'location');
}
$this->form_validation->set_rules('username', 'Login', 'trim|required|min_length[5]|maxlength[15]|alpha_numeric|callback__username_check');
$this->form_validation->set_rules('password', 'Hasło', 'trim|required|alpha_numeric|md5|min_length[5]');
$this->form_validation->set_rules('passconf', 'Potwierdzenie hasła', 'trim|required|matches[password]');
//$this->form_validation->set_rules('captcha', 'Kod z obrazka', 'trim|required|callback__check_captcha');
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');
if($this->form_validation->run()==FALSE)
{
$this->load->view('form_reg');
}
else
{
'user_name' => strtolower($this->input->post('username')), 'user_pass' => $this->input->post('password'),
'user_mail' => $this->input->post('email')
);
$this->user_model->insert_user($data);
$this->load->view('form_reg_succ');
}
}
#############################
/*
* CALLBACKI
*/
#############################
/*
* funkcja spr czy user wystepuje - potrzebna przy walidacji formularza przy rejestracji
*/
function _username_check($str)
{
if($this->user_model->get_user_by_login($this->input->post('username')))
{
$this->form_validation->set_message('_username_check', 'Wybrany login jest już w bazie danych! Wybierz inny!');
return FALSE;
}
else
{
return TRUE;
}
}
}
Model
class User_model extends CI_Model
{
function __construct()
{
parent::__construct();
}
/*
* pobierz usera po loginie - do spr aut.
*/
function get_user_by_login($login)
{
$q = "SELECT user_id FROM ci_users WHERE user_name = ?";
$r = $this->db->query($q, $login);
if($r->num_rows()==1)
return TRUE;
else
return FALSE;
}
/*
* pobierz usera po id
*/
function get_user_by_id($id)
{
$q = "SELECT * FROM ci_users where user_id = ?";
return $this->db->query($q,$id);
}
/*
* sprawdz czy login i haslo sie zgadzaja
*/
function get_logindata($login,$pass)
{
$q = "SELECT user_id, user_name FROM ci_users WHERE user_name = ? AND user_pass = ?";
return $this->db->query($q, array($login,$pass)); }
/*
* dodaj usera do bazy
*/
function insert_user($data)
{
return $this->db->insert('ci_users', $data);
}
}
Być może komuś się będzie chciało to prześledzić. Za wszelkie uwagi/sugestię etc z góry dzięki.