Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: codeigniter - kilkukrotne tworzenie sesji w bazie
Forum PHP.pl > Forum > PHP
ostry38
Witam, pisze CMS w oparty o w.w. framework. Wczoraj zobaczyłem że podczas logowania tworzą się 3 sesje w bazie danych przy czym tylko jedna jest pełna[tzn. są w niej dane usera], a znów podczas wylogowywania jest już 9 sesji w bazie o różnym id ale tym samym IP.

Za wszelkie wskazówki dziękuję.
Pozdrawiam.
ciekawskiii
Jak to pisza, mamy zgadywac? Wklej jakis kod
ostry38
user_model.php
  1. function Login($options = array())
  2. {
  3. // required values
  4. if(!$this->_required(
  5. array('user_login', 'user_password'),
  6. $options)
  7. ) return false;
  8.  
  9. $user = $this->GetUsers(array('user_login' => $options['user_login'], 'user_password' => md5($options['user_password'])));
  10. if(!$user) return false;
  11.  
  12. $this->session->set_userdata('user_login', $user->user_login);
  13. $this->session->set_userdata('user_id', $user->user_id);
  14. $this->session->set_userdata('user_type', $user->user_type);
  15.  
  16.  
  17. return true;
  18. }
  19.  
  20. function GetUsers($options = array())
  21. {
  22. // Qualification
  23. if(isset($options['user_id']))
  24. $this->db->where('user_id', $options['user_id']);
  25.  
  26. if(isset($options['user_login']))
  27. $this->db->where('user_login', $options['user_login']);
  28.  
  29. if(isset($options['user_email']))
  30. $this->db->where('user_email', $options['user_email']);
  31.  
  32. if(isset($options['user_password']))
  33. $this->db->where('user_password', $options['user_password']);
  34.  
  35. if(isset($options['user_status']))
  36. $this->db->where('user_status', $options['user_status']);
  37.  
  38. if(isset($options['user_type']))
  39. $this->db->where('user_type', $options['user_type']);
  40.  
  41. // Limits / offset
  42. if(isset($options['limit']) && isset($options['offset']))
  43. $this->db->limit($options['limit'], $options['offset']);
  44. else if(isset($options['limit']))
  45. $this->db->limit($options['limit']);
  46.  
  47. // Sort
  48. if(isset($options['sortBy']) && isset($options['sortDirection']))
  49. $this->db->order_by($options['sortBy'], $options['sortDirection']);
  50.  
  51. if(!isset($options['user_status'])) $this->db->where('user_status !=', 'deleted');
  52. $query = $this->db->get("users");
  53.  
  54. if(isset($options['count'])) return $query->num_rows();
  55.  
  56. if(isset($options['user_id']) || isset($options['user_login']))
  57. return $query->row(0);
  58.  
  59. return $query->result();
  60. }
  61.  

Controller main.php
  1. function login()
  2. {
  3. $user_login = $this->session->userdata('user_login');
  4. if(empty($user_login)){
  5. $this->form_validation->set_rules('user_login', 'login', 'trim|required|callback_check_login');
  6. $this->form_validation->set_rules('user_password', 'password', 'trim|required');
  7. $wysw = true;
  8. if($this->form_validation->run())
  9. {
  10. $_POST['user_login'] = $this->db->escape_str($_POST['user_login']);
  11. // je�eli formularz jes poprawny to:
  12. if($this->user_model->Login(array('user_login' => $this->input->post('user_login'), 'user_password' => $this->input->post('user_password'))))
  13. {
  14.  
  15.  
  16. $query = $this->db->query("SELECT * FROM ci_users WHERE user_login = '".$_POST['user_login']."'");
  17. foreach($query->result() as $row)
  18. if($row->user_status == 'inactive'){
  19. $this->session->sess_destroy();
  20. $info = array('info' => 'Twoje konto jest nie aktywne !', 'error' => true, 'red' => '');
  21. $this->load->view('users/user_info', $info);
  22. $wysw = false;
  23. }else{
  24. $info = array('info' => 'Zostałeś poprawnie zalogowany.', 'error' => false, 'red' => 'news');
  25. $this->load->view('users/user_info', $info);
  26. }
  27.  
  28.  
  29. }else {
  30. redirect('login');
  31. }
  32.  
  33. }
  34. if($wysw){
  35. $this->load->view('main/login_form');
  36. }
  37. }else{
  38. $info = array('info' => 'Jesteś już zalogowany !', 'error' => false, 'red' => 'news');
  39. $this->load->view('users/user_info', $info);
  40. }
  41. }
  42.  
  43. function logout()
  44. {
  45. $this->session->sess_destroy();
  46. $info = array('info' => 'Zostałeś poprawnie wylogowany.', 'error' => false, 'red' => 'news');
  47. $this->load->view('users/user_info', $info);
  48. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.