从其会话Codeigniter获取用户数据

时间:2016-03-17 01:58:06

标签: php mysql codeigniter

  

TABLES

Pengguna Pengguna

MAHASISWA Mahasiswa

我有2个表,PenggunaMahasiswa,表pengguna是一个包含用户数据的表,可以登录到网站,而表mahasiswa包含用户姓名,电子邮件,电话等数据。

然后我希望已登录的用户显示表mahasiswa中已存在的凭据信息。假设我使用用户名“123”使用 id_pengguna“3”登录,这意味着我的名字是“Mirza” my nim是“123”等等。

问题是我如何设置已记录用户的会话并从表mahasiswa获取用户信息?我所能做的就是显示mahasiswa中的第一个表,而不是从用户登录会话中获取数据,下面是controllermodelview

  

模型

<?php
   defined('BASEPATH') OR exit('No direct script access allowed');

   class MProfile extends CI_Model{
       function __construct(){
           parent::__construct();
           $this->load->database();
       }
       function read($cond, $ordField, $ordType){
          if($cond!=null){
             $this->db->where($cond);
          }
          if($ordField!=null){
             $this->db->order_by($ordField, $ordType);
          }
       $query = $this->db->get('mahasiswa');
       return $query;
       }
   }
  

CONTROLLER

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Profil extends MY_Controller {
    public function __construct(){
        parent::__construct();
        $this->load->helper('url');
        $this->load->library('session');
        $this->load->model('MProfile');

    }

    public function index(){
        $data['menu4'] = true;
        /*$this->sessionOut();*/
        $this->session->userdata('idpengguna');
        $data['query'] = $this->MProfile->read(null, 'nim', 'ASC');

        $this->load->view('layouts/header');
        $this->load->view('profil_page', $data);
        $this->load->view('layouts/footer');
    }

}
  

查看

<?php 
    if(isset($this->session->userdata['logged_in'])){
        $nim = $this->session->userdata['loggedin']['nim'];
    }
?>
<ul class="category-t">
    <?php foreach ($query->result() as $result){}?> 
    <li><?php echo $result->nim;?></li>
    <li><?php echo $result->nama_mahasiswa;?></li>
    <li><?php echo $result->email;?></li>
    <li><?php echo $result->telepon;?></li>
</ul>

2 个答案:

答案 0 :(得分:1)

很简单,您可以创建一个新查询,从mahasiswa表中选择数据。

将此添加到您的控制器

$data["row"] = $this->Mprofile->getmahasiswa();

在你的模特中

function getmahasiswa(){
   $idpengguna = $this->session->userdata('idpengguna');

   $this->db->where('id_pengguna', $idpengguna);
   $q = $this->db->get('mahasiswa');
   return $q->row();
}

在你看来

<ul class="category-t">
   <li><?php echo $nim;?></li>
   <li><?php echo $nama_mahasiswa;?></li>
   <li><?php echo $email;?></li>
   <li><?php echo $telepon;?></li>
</ul>

在视图顶部添加此内容

<?php
   if ($row){
       $nim= $row->nim;
       $nama_mahasiswa = $row->nama_mahasiswa;
       $email = $row->email;
       $telepon= $row->telepon;
   } else {
       $nim =
       $nama_mahasiswa =
       $email = 
       $telepon = "";
   }
?>

答案 1 :(得分:1)

您可以在模型中运行此查询,并从两个表中获取数据,然后可以使用它。将id发送到id_pengguna的模型。此ID将是用户 id 以进行比较
模型

$privateKey = openssl_pkey_new(array(
    'private_key_bits' => 384,      // Size of Key.
    'private_key_type' => OPENSSL_KEYTYPE_RSA,
));

openssl_pkey_export($privateKey, $privKey, null, ['config' =>   'C:/wamp/bin/apache/apache2.4.9/conf/openssl.cnf']);
$a_key = openssl_pkey_get_details($privateKey);

file_put_contents('keys/'.$username.'_public.key', $a_key['key']);
file_put_contents('keys/'.$username.'_private.key', $privKey);
openssl_free_key($privateKey);

<强>控制器

function getdata($id){
    $query = "select peng.*, masha.* 
    from pengguna peng join mashasiswa masha 
    on id_pengguna where masha.id_pengguna = $id";
    $query = $this->db->query($query);
    return $query->result_array();
}

希望这会有所帮助。