Данные пользователя Codeigniter

Привет, ребята, у меня есть пользовательский контроллер и модель User_model . Я хочу иметь возможность извлекать и отображать зарегистрированную электронную почту и номер телефона пользователя из базы данных в представление после входа пользователя в систему. Любая идея, как я могла бы это сделать, была бы оценена, и если бы коды могли быть написаны для демонстрации I будет очень счастлив.

МОДЕЛЬ

public function login($username, $password){ //validation $this->db->select('id, email, username'); $this->db->where('username', $username); $this->db->where('password', $password); $this->db->where('status', 1); $result = $this->db->get('users'); if($result->num_rows() == 1){ return $result->row(0)->id; } else { return FALSE; } } public function get_user($username){ $this->db->where('username', $username); $query = $this->db->get('users'); return $query->result(); } 

ДИСПЕТЧЕР:

  public function login(){ $data['title'] = 'Login'; $this->form_validation-> set_rules('username', 'Username', 'required'); $this->form_validation-> set_rules('password', 'Password', 'required'); if($this->form_validation->run() === FALSE){ $this->load->view('templates/header'); $this->load->view('users/login', $data); $this->load->view('templates/footer'); } else { // fetching user $username = $this->input->post('username'); //Encrypted password $password = md5($this->input->post('password')); //login user $user_id = $this->user_model->login($username, $password); if($user_id){ //creating session $user_data = array( 'user_id' => $user_id, 'username' => $username, 'logged_in' => TRUE, ); $this->session->set_userdata('user_data',$user_data); // Set message to be sent $this->session->set_flashdata('user_login', 'Welcome'); redirect('posts'); } else { // Set message to be sent $this->session->set_flashdata('login_fail', 'Login Failed'); redirect('users/login'); } } } public function get_user() { if($this->session->userdata('logged_in')){ $username = $this->session->userdata('username'); $data['results'] = $this->user_model->get_user($username); $this->load->view('templates/header'); $this->load->view('users/login', $data); $this->load->view('templates/footer'); } } 

Related of "Данные пользователя Codeigniter"

Когда вы входите в систему, если вы установите user_id в сеансе, вы можете получить информацию, подобную

Также прочтите руководство

  1. https://www.codeigniter.com/user_guide/database/results.html#result-rows
  2. https://www.codeigniter.com/user_guide/general/views.html#adding-dynamic-data-to-the-view

Убедитесь, что вы загрузили сеанс автозагрузки и базу данных.

Примеры ТОЛЬКО ниже.

Имя файла: User_model.php

  class User_model extends CI_Model { public function get_user($id) { $this->db->where('user_id', $id); $user_query = $this->db->get('yourtable'); return $user_query->row_array(); } } 

Имя файла: Dashboard.php

контроллер

  <?php class Dashboard extends CI_Controller { public function __construct() { parent::__construct(); if (!$this->session->userdata('user_id')) { redirect('logoutcontroller'); } $this->load->model('user_model'); } public function index() { $userdata = $this->user_model->get_user($this->session->userdata('user_id')); /** You can use what you want example $data['email'] = $userdata['email']; **/ $data['username'] = $userdata['username']; $this->load->view('some_view', $data); } } 

Посмотреть

 <?php echo $username;?> 

Вы можете использовать сеанс для переноса зарегистрированной детали пользователя.

Это ваш код модели:

 //In your model $query = $this->db ->select('id,email,phone') ->where(['username' => $username, 'password' => $password]) ->where('status','1') ->get('users'); $user_data = $query->row_array(); if (!empty($user_data)) { return $user_data; } else { return FALSE; } 

На стороне контроллера, где вы получаете данные пользователя, если username и password верны. Здесь вы можете поместить пользовательские данные в сеанс:

  //In Side Controller $user_data = $this->user_model->login($username, $password); if(isset($user_data) && !empty($user_data)){ // you can directly add the `$user_data` to the session as given billow. // set user data in session $this->session->set_userdata('user_data', $user_data); 

Теперь, после ввода данных в сеанс, вы можете получить его в любом месте, на любом представлении или в боковом море, контроллере.

  //retrive the user data in any view //To echo in view Inside your view code. <?php $session_data = $this->session->userdata('user_data'); $user_email = $session_data['email']; $user_phone = $session_data['phone']; $user_id = $session_data['id']; ?> <?= $user_phone ?> OR <?php echo $user_phone; ?> <?= $user_email ?> OR <?php echo $user_email; ?> 

В вашем представлении $this->load->view('users/login', $data); этот вид. Где размещен код HTML и PHP . Пример:

 <html> // Your View Page </body> <?php $session_data = $this->session->userdata('user_data'); $user_email = $session_data['email']; $user_phone = $session_data['phone']; $user_id = $session_data['id']; ?> <h1> Logged In User Email: <?= $user_email ?> </h1> <h1> Logged In User Phone: <?= $user_phone ?> </h1> <body> </html> 

Примечание. После сохранения пользовательских данных внутри сеанса вам не нужно передавать эти данные в контроллер формы представления. Вам просто нужно откликнуться, где вам это нужно.

Сначала необходимо загрузить библиотеку сеансов. как

 $this->load->library('session'); 

Затем, после того как вы сможете сохранить свои данные в сеансе,

 $newdata = array( 'username' => 'johndoe', 'email' => 'johndoe@some-site.com', 'logged_in' => TRUE ); $this->session->set_userdata($newdata); 

Затем, когда вы требуете от контроллера, вы можете извлекать данные сеанса, например,

 $data['session_data'] = $this->session->all_userdata(); 

и затем перейдите к вашему представлению,

 $this->load->view('data', $data); 

и затем получить доступ к этим данным в вашем представлении с помощью ключа,

 <?= $session_data['username']; ?> 

Я надеюсь, что это помогает,

Отвечает ли это на ваш вопрос?

 public function login($username, $password){ $db = $this->db; //validation $db->select('id, email, username'); $db->where('username', $username); $db->where('password', $password); $db->where('status', 1); $result = $db->get('users')->row_array(); return empty($result['id']) ? false : $result['id']; } 

С уникальным индексом по имени пользователя вам не нужно будет проверять количество строк, так как оно будет ограничено 1.

 if($user_id){ //creating session $user_data = array( 'user_id' => $user_id, 'username' => $username, 'logged_in' => TRUE, ); $this->session->set_userdata($user_data); // Set message to be sent $data['session_data'] = $this->session->all_userdata(); $this->session->set_flashdata('user_login', 'Welcome'); $this->load->view('posts', $data); //redirect('posts'); } else { // Set message to be sent $this->session->set_flashdata('login_fail', 'Login Failed'); redirect('users/login'); } } 

на вид,

 <?php print_r($session_data); ?> 

если вы получите данные сеанса в печать, вы можете отобразить его как,

 <?= $session_data['user_id']; ?> 

В вашем контроллере есть основная проблема

Проблема с данными сеанса: в вашем контроллере вы сохраняете все данные массива в сеансе CodeIgniter:

«user_data» будет работать как массив, и все остальные массивы будут назначаться как данные ключей;

 $this->session->set_userdata('user_data', $user_data); 

и вы извлекаете / проверяете данные сеанса, используя $this->session->userdata('logged_in') и $this->session->userdata('username') Это неправильно, мой друг. Вы можете получить сеанс пользовательских данных с помощью $this->session->userdata('user_data')['username'] или $this->session->userdata['user_data']['username']

Потому что сессия будет похожа;

 Array ( [__ci_last_regenerate] => 1499791562 // This is the array key 'user_data' where your array data stores [user_data] => Array ( [user_id] => 1 [username] => scott [email] => scott.dimon@example.com [phone_number] => 1234567890 [first_name] => Scott [logged_in] => 1 ) ) 

Таким образом, вы должны использовать «user_data» с сеансом для получения ваших данных

Одна вещь, которую я хотел бы рассказать всем, всегда внимательно прочитайте документы и руководство. Поверьте мне, если вы прочтете перед началом, ваш код будет более приятным и чистым … Ха-ха-ха-ха-ха ..;): |

**** Модальные **

//Логин пользователя**

  function userlogin($data) { $condition = "username =" . "'" . $data['username'] . "' AND " . "password =" . "'" . $data['password'] . "' AND " . "status = '1'"; $this->db->select("*"); $this->db->from("user"); $this->db->where($condition); $this->db->limit(1); $query = $this->db->get(); if ($query->num_rows() == 1) { return $query->result(); } else { return false; } } 

И в вашей контрольной проверке

 if($this->modal_name->login()==false) { //redirect user to login page } else { $data['details'] = $this->modal_name->login(); $this->load->view("post",$data); } 

Посмотреть

 foreach($details as $detail) { echo $detail->id; echo $detail->username; }