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'); exit; } $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'); exit; } } /* * LOGOWANIE */ public function login() { if($this->session->userdata('s_loggedin')==TRUE) { redirect('/user', 'location'); exit; } $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'); exit; } else { redirect('/user/login', 'location'); exit; } } else { $this->load->view('form_login'); } } /* * WYLOGOWANIE */ public function logout() { if($this->session->userdata('s_loggedin')==TRUE) { $this->session->sess_destroy(); redirect('/user', 'location'); exit; } else { redirect('/user/login', 'location'); exit; } } /* * REJESTRACJA */ public function register() { if($this->session->userdata('s_loggedin')==TRUE) { redirect('/user', 'location'); exit; } $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_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 = ?"; } /* * 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.