userdata start ejemplo php codeigniter session

php - start - Cómo guardar y extraer datos de sesión en codeigniter



session codeigniter ejemplo (6)

En CodeIgniter puede almacenar el valor de su sesión como único o también en formato de matriz como se muestra a continuación:

Si desea almacenar los datos de cualquier usuario en una sesión como userId, userName, userContact, etc., debe almacenar en matriz:

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

Entra en detalles con el ejemplo de demostración:

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

Guardo algunos datos en la sesión en mi controlador de verificación, luego extraigo estos datos de la sesión en el modelo user_activity e inserto los datos de la sesión en la tabla de actividades. Mi problema es solo los datos de nombre de usuario guardados en la sesión y puedo obtener e insertar solo datos de nombre de usuario después de extraer la sesión en el modelo. Soy nuevo en Codeigniter. Por esta razón es muy difícil descubrir el problema. Estoy intentando varios días encontrando el problema. Pero lamentablemente no puedo. Así que por favor, que alguien me ayude. Gracias

Controlador 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_array = array(); foreach($result as $row) { $sess_array = array( ''username'' => $row->username, ''user_agent'' => $row->user_agent, ''ip_address'' => $row->ip_address, ); $this->session->set_userdata(''logged_in'', $sess_array); //insert user activity $this->user_activity->activity(); } return TRUE; } else { $this->form_validation->set_message(''check_database'', ''Invalid username or password''); return false; } } } ?>

modelo de 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 = array( ''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; } } } ?>


En codeigniter podemos almacenar valores de sesión en una base de datos. En el archivo config.php, haga que la variable sess_use_database sea true

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

y crea una tabla ci_session en la base de datos

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`) );

Para más detalles y referencias, haga clic aquí.


Inicialice la clase Session en el constructor del controlador usando

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

por ejemplo :

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


La clase de sesión de CI rastrea la información sobre cada usuario mientras navegan por el sitio. La clase de sesión de CI genera sus propios datos de sesión, lo que ofrece más flexibilidad para los desarrolladores.

Inicializando una sesión

Para inicializar la clase de sesión manualmente en nuestro constructor de controlador, utilice el siguiente código.

Agregar datos de sesión personalizados

Podemos agregar nuestros datos personalizados en la matriz de la sesión. Para agregar nuestros datos a la matriz de la sesión implica pasar una matriz que contiene sus nuevos datos a esta función.

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

Donde $ newarray es una matriz asociativa que contiene nuestros nuevos datos.

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

Sesión de recuperación

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

La función anterior devuelve FALSE (booleano) si la matriz de la sesión no existe.

Recuperar todos los datos de la sesión

$ this-> session-> all_userdata ()

He tomado la referencia de http://www.tutsway.com/codeigniter-session.php .


Primero tienes la biblioteca de sesión de carga.

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

Puedes cargarlo en carga automática, lo cual creo que es mejor.

Configurar sesion

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

Extraer datos

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


Puede configurar los datos para la sesión simplemente así en Codeigniter:

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

y puedes conseguirlo así:

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