wake-up-neo.net

So speichern und extrahieren Sie Sitzungsdaten in Codeigniter

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;
       }
      }
    }
    ?>
23
user2365514

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');
49
Mehdi Jalal

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");
16

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');
   }
6
Rajeev Ranjan

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

3
Prabin Tp

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 .

2
Manish

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/

0
Chetan Panchal