将会话ID存储在codeigniter中的另一个表中

时间:2017-03-04 09:22:17

标签: mysql codeigniter

我有一个供应商的登录页面。在供应商登录后,他们重定向到vendor_dashboard ..我获得了带有仪表板链接的供应商ID ...我在仪表板页面中获得了该特定的供应商名称..

在供应商仪表板中.vendor有一个名为candidate的选项卡..当他们点击该选项卡时,他们会重定向到add_candidate page..so当供应商提交表单时我想将该vendor_id存储在候选表中。

在candidate_table中有一列名为vendor_id..after submit我想为该特定候选人存储该vendor_id ..

我正在尝试这样做..从过去的6个小时开始..但它不存储.. 问题是我没有得到任何关于如何做到这一点..

登录页面:

if($this->input->post())
{
$user = $this->LoginModel->login($this->input->post());
if(count($user)>0)
{
$data = array(
'user_id' => $user['user_id'],
'first_name' => $user['first_name'],
'email' => $user['email'],
'password' => $user['password']
);                   
$this->session->set_userdata($data);
if($user['user_type_id'] == '1')
{
// redirect(base_url('index.php/Login/vendor_dashboard/'.$data['first_name']));
redirect(base_url('index.php/Login/vendor_dashboard/'.$this->session->user_id));                
} 
elseif($user['user_type_id'] == '2')
{
// (base_url('index.php/Login/user_dashboard/'.$this->session->user_id));
}
else
{
redirect(base_url('index.php/Login/dashboard'));
}
}

控制板:

<?= ($this->session->first_name)? $this->session->first_name : "" ?>

任何人都可以帮助我..

提前致谢..

1 个答案:

答案 0 :(得分:1)

您的问题与此post有关。无论如何,这是你可以做的。首先使用用户控制器进行身份验证,或者将其命名为登录或任何您熟悉的

class Users extends CI_Controller
{

public function __construct()
{
    parent::__construct();
    $this->load->model('user_model');
}
public function index()
{
    $data['title']='Vendors Application';
    if($_POST)
    {
        $user=$this->user_model->checkUser($_POST);
        if(count($user)>0)
        {
            $this->session->set_userdata($user);
            redirect(base_url().'dasboard/vendor');
        }
    }
    else
    {
        $this->load>view('login',$data);
    }

 }
}

在用户模型中检查数据库中的用户的功能如下

public function checkUser($data)
{
    $st=$this->db->select('*')->from('users')
        ->WHERE('email',$data['email'])
        ->WHERE('password',md5(sha1($data['password'])))
        ->get()->result_array();
    if(count($st)>0)
    {
        return $st[0];
    }
    else
    {
        return false;
    }
}

登录并重定向到仪表板后,使用仪表板控制器或任何您可以调用它的方式添加候选项。

class Dashboard extends CI_Controller
{

public function __construct()
{
    parent::__construct();
    $this->load->model('user_model');
}
public function vendor()
{
    $data['title']='Vendor Dashboard';

    if($_POST)
    {
        //validation
        $this->user_model->addCandidate($_POST);
        $data['success']='Candidate Added Successfully';
        $this->load->view('vendor_dashboard',$data);
    }
    else
    {
        $this->load->view('vendor_dashboard',$data);
    }

 }
}

用户模型中添加候选项的功能如下。

public function addCandidate($data)
{
    $candidate=array(
        'user_id'=>$this->session->userdata['id'],
        'first_name'=>$data['first_name'],
        'last_name'=>$data['last_name'],
        'address'=>$data['address'],
        'contact'=>$data['contact']
    );
    $this->db->insert('candidates',$candidate);
    return $this->db->insert_id();
}

请记住,当您登录并在会话中存储其记录时,您的会话中已有供应商ID,因此无需向控制器URL发送任何ID以加载仪表板。

我希望您了解CI表格验证,如果没有,请找到它here