2017-05-15 1 views
0

私はcodeigniter 3.1を使用しています。ユーザからのユーザ名とユーザIDをセッションから追跡し、データベーステーブルに格納したいと思います。だから私はデータベースにcodeigniter 3.1セッションテーブルを作成しました。ここでは、codeigniterにusernameとusers_idを格納する方法3.1セッションデータベーステーブル

CREATE TABLE IF NOT EXISTS `ci_sessions` (
     `id` varchar(40) NOT NULL, 
     `ip_address` varchar(45) NOT NULL, 
     `user_id` varchar(45) NOT NULL, 
     `username` varchar(45) NOT NULL, 
     `timestamp` int(10) unsigned DEFAULT 0 NOT NULL, 
     `data` blob NOT NULL, 
     PRIMARY KEY (id), 
     KEY `ci_sessions_timestamp` (`timestamp`) 
    ); 

であり、また、それはここで

$config['sess_driver'] = 'database'; 
    $config['sess_cookie_name'] = 'ci_sessions'; 
    $config['sess_expiration'] = 7200; 
    $config['sess_save_path'] = 'ci_sessions';//its your table name name 
    $config['sess_match_ip'] = FALSE; 
    $config['sess_time_to_update'] = 300; 

で出力がブラウザに表示される。ここ

 public function session_test($value='') 
     { 
      $newdata = array(
         'username' => 'johndoe', 
         'user_id'  => 3, 
         'logged_in' => TRUE 
        ); 

    $this->session->set_userdata("userdata",$newdata); 
    $session_id = $this->session->userdata('userdata'); 
    echo "<pre>"; 
    print_r($session_id); 
    echo "</pre>"; 
     } 

セッションのための私のコントローラ機能でも、ここでconfig.phpセッションを変更

です
Array 
    (
     [username] => johndoeasdas 
     [user_id] => [email protected] 
     [logged_in] => 1 
    ) 

ここで、データベースに格納すると、セッションがデータベースに保存されている画像があるが、私は、データベースにセッションからユーザー名とUSER_IDを保存することができません。ここ

database

です。

セッションからusernameとuser_idをデータベーステーブルに格納する方法。

ありがとうございます。

答えて

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

このテーブルには、セッションデータが保存されます。これでconfig変数を設定する必要があります。 「アプリケーション/設定/ config.phpを」に移動し、変数以下の更新:

$config['sess_driver'] = 'database'; //by deafault it may be 'files' 
$config['sess_cookie_name'] = 'ci_session'; 
$config['sess_expiration'] = 7200; 
$config['sess_save_path'] = 'sessions'; 
$config['sess_match_ip'] = FALSE; 
$config['sess_time_to_update'] = 300; 
$config['sess_regenerate_destroy'] = FALSE; 

今すぐ詳細については

$data = array(
    'name'   => 'xyz', //some value 
    'is_logged_in' => TRUE 
); 
    $this->session->set_userdata($data); 

を使用して、セッションデータを保存する必要のないhttps://www.codeigniter.com/userguide3/libraries/sessions.html

0

をご覧ください。実際にはci_sessionの構造を変更するには、テーブル構造を変更しないでください。 CodeIgniter's documentationの表構造を使用してください。

CREATE TABLE IF NOT EXISTS `ci_sessions` (
     `id` varchar(128) NOT NULL, 
     `ip_address` varchar(45) NOT NULL, 
     `timestamp` int(10) unsigned DEFAULT 0 NOT NULL, 
     `data` blob NOT NULL, 
     KEY `ci_sessions_timestamp` (`timestamp`) 
); 

セッションデータに追加するものはすべて、テーブルの「データ」列に格納されます。

セッションデータは既に配列です。あなたは、セッションデータ項目として一連のデータを置くことによって、人生をより困難にするだけです。このテストコントローラにより、任意のセッションデータ項目へのアクセスがより簡単になります。

public function session_test($value = '') 
{ 
    $newdata = array(
     'username' => 'johndoe', 
     'user_id' => 3, 
     'logged_in' => TRUE 
    ); 

    $this->session->set_userdata($newdata); 
    echo "User Name: ".$this->session->username."<br>"; 
    echo "User ID: ".$this->session->user_id."<br>"; 
    echo "Is logged in: "; 
    echo $this->session->logged_in ? 'Yes' : 'No'; 
} 
関連する問題