public function login() { $data = array(); if ($this->input->post()) { $this->form_validation->set_rules('email', 'Email', "trim|required|valid_email"); $this->form_validation->set_rules('password', 'Password', "trim|required"); if ($this->form_validation->run() == TRUE) { $data['login_from'] = 'form'; $data['login_ip'] = $this->session->userdata('ip_address'); $data['user_agent'] = $this->session->userdata('user_agent'); $data['last_login'] = $this->session->userdata('last_login'); $this->db->where('email_address', $this->input->post('email')); $this->db->where('password', md5($this->input->post('password'))); $this->db->where('suspend', 0); $query = $this->db->get('users', 1); if ($query->num_rows() < 1) { $data['error_msg'] = 'Wrong email address or password, please try again!'; } else { //update login info $row = $query->row(); unset($row->password); //geo ip $loc = get_location_info(); if (is_object($loc) && isset($loc->ip)) { $data['login_ip'] = $loc->ip; if ($row->city == '') { $data['city'] = $loc->city; } if ($row->state == '') { $data['state'] = $loc->region_name; } if ($row->country == '') { $data['country'] = $loc->country_name; } if ($row->latitude == '') { $data['latitude'] = $loc->latitude; } if ($row->longitude == '') { $data['longitude'] = $loc->longitude; } } $this->db->where('id', $row->id); $this->db->update('users', $data); $data = array_merge($data, (array) $row); $data['logged_in'] = TRUE; $data['password_verified'] = TRUE; $this->session->set_userdata($data); redirect(base_url('/dashboard/')); } } } $this->load->view('dashboard/header', array('title' => 'Login', 'page_preview' => TRUE)); $this->load->view(get_client() . '/login-dashboard', $data); $this->load->view('dashboard/footer'); //var_dump($this->session->all_userdata()); login issue need to fix, clue is somehow ci regenerate the session //check this https://github.com/EllisLab/CodeIgniter/wiki/Native-session }
public function index() { $data = array(); $data['states'] = $this->config->item('us_states'); $data['show_state'] = TRUE; //geo ip $loc = get_location_info(); if (is_object($loc) && isset($loc->ip)) { $data['login_ip'] = $loc->ip; $data['city'] = $loc->city; if (isset($loc->region_name)) { $data['state'] = $loc->region_name; } if (isset($loc->region)) { $data['state'] = $loc->region; } if (isset($loc->country_name)) { $data['country'] = $loc->country_name; } if (isset($loc->country)) { $data['country'] = $loc->country; } $data['latitude'] = $loc->latitude; $data['longitude'] = $loc->longitude; } $data['show_gender'] = TRUE; if ($this->input->post()) { $this->form_validation->set_rules('name', 'Name', "trim|required"); if ($this->input->post('business')) { $this->form_validation->set_rules('business', 'Business Name', "trim|required"); } if ($this->input->post('password')) { $this->form_validation->set_rules('password', 'Password', "trim|required|callback__check_password"); } $this->form_validation->set_rules('email', 'Email', "trim|required|valid_email"); if ($this->input->post('phone')) { $this->form_validation->set_rules('phone', 'Phone Number', "trim|required|callback__isValidPhone"); } if ($this->input->post('zipcode')) { $this->form_validation->set_rules('zipcode', 'Zip Code', "trim|required|callback__isValidZipCode"); } if ($this->form_validation->run() == TRUE) { $data['login_from'] = 'form'; $data['login_ip'] = $this->session->userdata('ip_address'); $data['user_agent'] = $this->session->userdata('user_agent'); $data['last_login'] = $this->session->userdata('last_login'); $this->db->where('email_address', $this->input->post('email')); $query = $this->db->get('users', 1); $user = $query->row(); $suspend = $query->num_rows() == 1 && $user->suspend == 1 ? true : false; if ($query->num_rows() < 1) { $data['level'] = 1; $parts = explode(" ", $this->input->post('name')); $data['last_name'] = array_pop($parts); $data['first_name'] = implode(" ", $parts); if ($this->input->post('business')) { $data['business'] = $this->input->post('business'); } if ($this->input->post('phone_number')) { $data['phone_number'] = $this->input->post('phone'); } if ($this->input->post('zip_code')) { $data['zip_code'] = $this->input->post('zipcode'); } if ($this->input->post('state')) { $data['state'] = $this->input->post('state'); } if ($this->input->post('gender')) { $data['gender'] = $this->input->post('gender'); } $data['email_address'] = $this->input->post('email'); if ($this->input->post('password')) { $data['password'] = md5($this->input->post('password')); } unset($data['states']); unset($data['show_state']); unset($data['show_gender']); $this->db->insert('users', $data); $data['id'] = $this->db->insert_id(); } elseif ($suspend === false) { //update login info $row = $query->row(); unset($row->password); $parts = explode(" ", $this->input->post('name')); $data['last_name'] = array_pop($parts); $data['first_name'] = implode(" ", $parts); if ($this->input->post('password')) { $data['password'] = md5($this->input->post('password')); } if ($this->input->post('business')) { $data['business'] = $this->input->post('business'); } if ($this->input->post('phone_number')) { $data['phone_number'] = $this->input->post('phone'); } if ($this->input->post('zip_code')) { $data['zip_code'] = $this->input->post('zipcode'); } if ($this->input->post('state')) { $data['state'] = $this->input->post('state'); } if ($this->input->post('gender')) { $data['gender'] = $this->input->post('gender'); } unset($data['states']); unset($data['show_state']); unset($data['show_gender']); $this->db->where('id', $row->id); $this->db->update('users', $data); $data = array_merge($data, (array) $row); } else { $data['error_msg'] = 'Your account is suspended. Please contact admin for more info!'; } //if ( $query->num_rows() < 1 ): if ($suspend === false) { $data['logged_in'] = TRUE; $this->session->set_userdata($data); if (!$this->session->userdata('url')) { redirect(base_url('/welcome/')); } else { redirect($this->session->userdata('url')); } } } //if ($this->form_validation->run() == TRUE): } //if ($this->input->post()) : $page_name = 'login-page'; if ($this->input->get('alt-theme')) { $page_name .= ' ' . $this->input->get('alt-theme'); } $this->load->view(get_client() . '/header', array('title' => 'Login', 'login_page' => TRUE, 'page_name' => $page_name)); $this->load->view(get_client() . '/login-form', $data); $this->load->view(get_client() . '/footer', array('login_page' => TRUE)); }
function get_city_name($user_ip) { $location = get_location_info($user_ip); return $location['city_name']; }