2017-04-03 6 views
0

データベースにセッション情報を格納するためのセットアップ認証があります。 ci_sessionテーブルには、次のフィールドcodeigniterでion authを使用している場合にユーザーになりすまし

ID、IP_ADDRESS、タイムスタンプ、データ

を持って、私は私ができるようにしたい、このコード

$this->db->order_by('id', 'ASC'); 
$this->db->limit(1); 
$last_session = $this->db->get('ci_sessions')->row_array(); 

print_r($last_session['data']);//prints current session data 

と私の現在のセッションのデータをフェッチすることができますログインしたユーザーをオンザフライで切り替えるために、この機能をこの要点から借用しました。https://gist.github.com/anonymous/4440000

私はmodifを持っていますこのよう

public function impersonate() 
    { 
     $identity = '[email protected]'; 
     $goall = $this->config->item('identity', 'ion_auth'); 

      $query = $this->db->select($goall . ', username, email, id, active, last_login') 
       ->where($goall, $this->db->escape_str($identity)) 
       ->limit(1) 
       ->get('users'); 

      if ($query->num_rows() === 1) 
      { 
       $user = $query->row(); 

       $session_data = array(
        'identity'    => $goall, 
        'username'    => $user->username, 
        'email'    => $user->email, 
        'user_id'    => $user->id, //everyone likes to overwrite id so we'll use user_id 
        'impersonating'  => true 
       ); 

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

       return TRUE; 
      } 

     else { 

      return FALSE; 

     } 

    } 

IED ci_sessionsのデータ列がユーザーを切り替えることができるようにするには、この

__ci_last_regenerate|i:1491200360;identity|s:15:"[email protected]";email|s:15:"[email protected]";user_id|s:1:"1";old_last_login|s:10:"1491199371";last_check|i:1491200371;message|s:29:"<p>Logged In Successfully</p>";__ci_vars|a:1:{s:7:"message";s:3:"old";} 

のように見える、私は新しいユーザーの詳細情報を反映するために、データ列を更新します。

データ列データをデコードしようとしましたが、有効なjsonは無効です。このツールを使用することもできますhttp://freeonlinetools24.com/json-decode

ログインしたユーザーを切り替えるために、データフィールドinroderを更新するにはどうすればよいですか。

答えて

0

これは恐ろしい、本当に恐ろしい解決策です。他のユーザーのセッションデータをデコードする必要はありません。あなたがしようとしていることを達成する別の方法を見つけることをお勧めします。

関連する問題