Come salvare ed estrarre i dati di session in codeigniter

Salvando alcuni dati in session sul mio controller di verifica, estrai i dati di questa session nel model user_activity e inserisco i dati di session nella tabella delle attività. Il mio problema sono solo i dati del nome utente salvati in session e posso get e inserire solo i dati del nome utente dopo aver estratto la session sul model. Sono nuovo in Codeigniter. Per questo motivo è molto difficile scoprire il problema. Sto cercando diversi giorni per trovare il problema. Ma sfortunatamente non posso. Quindi, per favore, qualcuno mi aiuti. Grazie

Controller VerifyLogin:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); session_start(); class VerifyLogin extends CI_Controller { function __construct() { parent::__construct(); $this->load->model('user','',TRUE); $this->load->model('user_activity','',TRUE); } function index() { //This method will have the credentials validation $this->load->library('form_validation'); $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean'); $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database'); if($this->form_validation->run() == FALSE) { //Field validation failed. User redirected to login page $this->load->view('login_view'); } else { //Go to private area redirect('home', 'refresh'); } } function check_database($password) { //Field validation succeeded. Validate against database $username = $this->input->post('username'); $vercode = $this->input->post('vercode'); //query the database $result = $this->user->login($username, $password); // ip address $ip_address= $this->user_activity->get_client_ip(); //Retrieving session data and other data $captcha_code=$_SESSION['captcha']; $user_agent=$_SERVER['HTTP_USER_AGENT']; if($result && $captcha_code == $vercode) { $sess_arrays = arrays(); foreach($result as $row) { $sess_arrays = arrays( 'username' => $row->username, 'user_agent' => $row->user_agent, 'ip_address' => $row->ip_address, ); $this->session->set_userdata('logged_in', $sess_arrays); //insert user activity $this->user_activity->activity(); } return TRUE; } else { $this->form_validation->set_message('check_database', 'Invalid username or password'); return false; } } } ?> 

model user_activity:

  <?php Class User_activity extends CI_Model { function activity() { if($this->session->userdata('logged_in')) { $session_data = $this->session->userdata('logged_in'); // $data['username'] = $session_data['username']; $data = arrays( 'session_id'=>"", 'ip_address'=>$session_data['ip_address'], 'user_agent'=>$session_data['user_agent'], 'username'=>$session_data['username'], 'time_stmp'=>Now(), 'user_data'=>$session_data['username']."Logged in Account" ); $this->db->insert('user_activity',$data); } else { return false; } // Function to get the client ip address function get_client_ip() { $ipaddress = ''; if ($_SERVER['HTTP_CLIENT_IP']) $ipaddress = $_SERVER['HTTP_CLIENT_IP']; else if($_SERVER['HTTP_X_FORWARDED_FOR']) $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR']; else if($_SERVER['HTTP_X_FORWARDED']) $ipaddress = $_SERVER['HTTP_X_FORWARDED']; else if($_SERVER['HTTP_FORWARDED_FOR']) $ipaddress = $_SERVER['HTTP_FORWARDED_FOR']; else if($_SERVER['HTTP_FORWARDED']) $ipaddress = $_SERVER['HTTP_FORWARDED']; else if($_SERVER['REMOTE_ADDR']) $ipaddress = $_SERVER['REMOTE_ADDR']; else $ipaddress = 'UNKNOWN'; return $ipaddress; } } } ?> 

È ansible impostare i dati per la session in questo modo in Codeigniter:

 $this->load->library('session'); $this->session->set_userdata(arrays( 'user_id' => $user->uid, 'username' => $user->username, 'groupid' => $user->groupid, 'date' => $user->date_cr, 'serial' => $user->serial, 'rec_id' => $user->rec_id, 'status' => TRUE )); 

e puoi ottenerlo in questo modo:

 $u_rec_id = $this->session->userdata('rec_id'); $serial = $this->session->userdata('serial'); 

Per prima cosa hai una libreria di sessioni di caricamento.

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

Puoi caricarlo in modalità auto load, che ritengo sia meglio.

Per impostare la session

 $this->session->set_userdata("SESSION_NAME","VALUE"); 

Per estrarre i dati

 $this->session->userdata("SESSION_NAME"); 

inizializza la class Session nel constructor del controller usando

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

per esempio :

  function __construct() { parent::__construct(); $this->load->model('user','',TRUE); $this->load->model('user_activity','',TRUE); $this->load->library('session'); } 

CI Session Class tiene traccia delle informazioni su ciascun utente mentre navigano sul sito. La session Session genera i propri dati di session, offrendo maggiore flessibilità per gli sviluppatori.

Inizializzazione di una session

Per inizializzare manualmente la class Session nel nostro constructor di controller, utilizzare il seguente codice.

Aggiunta di dati di session personalizzati

Possiamo aggiungere i nostri dati personalizzati nell'arrays di session. Per aggiungere i nostri dati all'arrays di session è necessario passare una matrix contenente i nuovi dati a questa function.

 $this->session->set_userdata($newarrays); 

Dove $ newarrays è un arrays associativo contenente i nostri nuovi dati.

 $newarrays = arrays( 'name' => 'manish', 'email' => '[email protected]'); $this->session->set_userdata($newarrays); 

Recupero della session

$ session_id = $ this-> session-> userdata ('session_id');

La function precedente restituisce FALSE (boolean) se l'arrays di session non esiste.

Recupero di tutti i dati della session

$ This-> session-> all_userdata ()

Ho preso riferimento a http://www.tutsway.com/codeigniter-session.php .

In codeigniter siamo in grado di memorizzare i valori di session in un database. Nel file config.php rendere true la variabile sess_use_database

 $config['sess_use_database'] = TRUE; $config['sess_table_name'] = 'ci_sessions'; 

e creare una tabella ci_session nel database

 CREATE TABLE IF NOT EXISTS `ci_sessions` ( session_id varchar(40) DEFAULT '0' NOT NULL, ip_address varchar(45) DEFAULT '0' NOT NULL, user_agent varchar(120) NOT NULL, last_activity int(10) unsigned DEFAULT 0 NOT NULL, user_data text NOT NULL, PRIMARY KEY (session_id), KEY `last_activity_idx` (`last_activity`) ); 

Per maggiori dettagli e riferimenti, clicca qui

In CodeIgniter è ansible memorizzare il valore della session come singolo o anche in formato arrays come di seguito:

Se vuoi memorizzare i dati di qualsiasi utente in session come userId, userName, userContact etc, allora dovresti memorizzare in arrays:

 <?php $this->load->library('session'); $this->session->set_userdata(arrays( 'userId' => $user->userId, 'userName' => $user->userName, 'userContact ' => $user->userContact )); ?> 

Scopri i dettagli con la demo di esempio:

http://devgambit.com/how-to-store-and-get-session-value-in-codeigniter/