Ich speichere einige Daten in einer Sitzung auf meinem Überprüfungscontroller, extrahiere diese Sitzungsdaten in das user_activity-Modell und füge Sitzungsdaten in die Aktivitätstabelle ein. Mein Problem sind nur Benutzername-Daten, die in der Sitzung gespeichert werden, und ich kann nach dem Extrahieren der Sitzung nach Modell nur Benutzername-Daten abrufen und einfügen. Ich bin neu in Codeigniter. Aus diesem Grund ist es sehr schwierig, das Problem herauszufinden. Ich versuche mehrere Tage, das Problem zu finden. Aber leider kann ich nicht Also bitte, jemand hilft mir. Vielen Dank
VerifyLogin-Controller:
<?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;
}
}
}
?>
user_activity-Modell:
<?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;
}
}
}
?>
In Codeigniter können Sie Daten einfach wie folgt auf Sitzung setzen:
$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
));
und du kannst es so bekommen:
$u_rec_id = $this->session->userdata('rec_id');
$serial = $this->session->userdata('serial');
Zuerst haben Sie eine Sitzungsbibliothek geladen.
$this->load->library("session");
Sie können es im automatischen Laden laden, was meiner Meinung nach besser ist.
Sitzung einstellen
$this->session->set_userdata("SESSION_NAME","VALUE");
Daten extrahieren
$this->session->userdata("SESSION_NAME");
initialisieren Sie die Session-Klasse im Konstruktor des Controllers mit
$this->load->library('session');
zum Beispiel :
function __construct()
{
parent::__construct();
$this->load->model('user','',TRUE);
$this->load->model('user_activity','',TRUE);
$this->load->library('session');
}
In codeigniter können wir Sitzungswerte in einer Datenbank speichern. In der Datei config.php muss die Variable sess_use_database true
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'ci_sessions';
und erstellen Sie eine ci_session-Tabelle in der Datenbank
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`)
);
Für mehr Details und Referenzen, hier klicken
Die CI-Sitzungsklasse verfolgt Informationen zu jedem Benutzer, während er die Site durchsucht. Die CI-Sitzungsklasse generiert ihre eigenen Sitzungsdaten und bietet damit mehr Flexibilität für Entwickler.
Eine Sitzung initialisieren
Um die Session-Klasse manuell in unserem Controller-Konstruktor zu initialisieren, verwenden Sie folgenden Code.
Benutzerdefinierte Sitzungsdaten hinzufügen
Wir können unsere benutzerdefinierten Daten im Session-Array hinzufügen. Um unsere Daten zum Session-Array hinzuzufügen, müssen Sie ein Array mit Ihren neuen Daten an diese Funktion übergeben.
$this->session->set_userdata($newarray);
Dabei ist $ newarray ein assoziatives Array, das unsere neuen Daten enthält.
$newarray = array( 'name' => 'manish', 'email' => '[email protected]'); $this->session->set_userdata($newarray);
Sitzung abrufen
$ session_id = $ this-> session-> userdata ('session_id');
Die obige Funktion gibt FALSE (boolean) zurück, wenn das Sitzungsarray nicht vorhanden ist.
Alle Sitzungsdaten abrufen
$ this-> session-> all_userdata ()
Ich habe Bezug genommen von http://www.tutsway.com/codeigniter-session.php .
In CodeIgniter können Sie Ihren Sitzungswert als einzeln oder auch im Array-Format wie folgt speichern:
Wenn Sie die Daten eines Benutzers in einer Sitzung speichern möchten, z. B. userId, userName, userContact usw., sollten Sie diese in array speichern:
<?php
$this->load->library('session');
$this->session->set_userdata(array(
'userId' => $user->userId,
'userName' => $user->userName,
'userContact ' => $user->userContact
));
?>
Informieren Sie sich mit Beispiel-Demo:
http://devgambit.com/how-to-store-and-get-session-value-in-codeigniter/