【问题标题】:codeigniter session user data settingcodeigniter 会话用户数据设置
【发布时间】:2017-03-18 21:28:32
【问题描述】:

我想在会话中设置用户数据。当我从登录表单中获取电子邮件时,我可以在会话数据中设置电子邮件。 但我不知道如何从数据库中获取所有详细信息并设置为会话。这是我的代码

控制器:

public function login_validation() {

    // get form input
    $email = $this->input->post("email");
    $password = $this->input->post("password");

    // form validation

    $this->load->library('form_validation');
    $this->form_validation->set_rules("email", "Email-ID", "trim|required");
    $this->form_validation->set_rules("password", "Password", "trim|required");

    if ($this->form_validation->run() == FALSE)
    {
        // validation fail
        $this->load->view('admin/login');
    }
    else
    {
        // check for user credentials
        $this->load->model('site_model');
        $uresult = $this->site_model->get_user($email, $password);
        $data["results"]=$this->site_model->getdata_user($email);
        foreach ($data as $row) {
            $fname = $row['fname'];

        }

        if (count($uresult) > 0)
        {

            $data = array(                      
                'email' => $email,
                'fname' => $fname,
                'lname' => $lname,  
                'pre'=>$pre,
                'is_logged_in' => 1                         
            );

            // set session
            $this->session->sess_expiration = '0';// will not expire
            $this->session->set_userdata($data);

            redirect("admin/index");
        }
        else
        {
            $this->session->set_flashdata('msg', '<div class="alert alert-danger text-center">Wrong Email-ID or Password!</div>');
            $this->load->view('admin/login');
        }
    }

}

型号:

function getdata_user($email)
{
    $query= $this->db->get_where("users", array("email"=>$email));

    return $query->result();

}

users 表中有一些文件:fname,lname 我想设置为会话。

提前谢谢你。

【问题讨论】:

    标签: php codeigniter session


    【解决方案1】:

    看看查询构建器类。 https://www.codeigniter.com/userguide3/database/query_builder.html

    使用此资源,您应该能够构建一些代码来读取数据库中的列。

    有关如何使用 where 子句选择列的示例。

    $this->db->select('fname, lname'); 
    $this->db->from('users');
    $this->db->where('email', $email);
    $query = $this->db->get();
    

    【讨论】:

    • 你能帮我写代码吗?请 :) 我是 codeigniter 的新手。
    • 我得到了模型部分。如何将此数据传递给控制器​​,然后将其设置为会话。请看我的代码。谢谢
    • function getdata_user($email) { $query= $this->db->get_where("users", array("email"=>$email));返回$查询->结果(); }
    • function getdata_user($email) { $query= $this->db->get_where("users", array("email"=>$email));返回$查询->结果();这是我的模型,这是从特定用户的用户表中获取数据。现在如何在控制器中使用这些数据。
    【解决方案2】:

    1.)首先,您将从控制器调用您的数据库查询:

    $data = $this->Modal_name->getdata();

    2.)模态部分在这里:

    $this->db->select('fname, lname');
    $this->db->from('users');
    $this->db->where('email', $email) ;
    $query = $this->db->get();
    return $query->result_array();
    

    // 通过上面的代码,您将获得所有带有您想要的电子邮件ID的数组格式的条目,并且该数组将返回给控制器并存储在$data变量中。

    3.) 将此变量设置为会话值:

    $this->session->set_userdata('all_data', $data);
    

    //这里,你已经把所有的返回值都存储在了会话中。

    4.) 访问值的方式: //所有值:

    $this->session->userdata('all_data');
    

    //某个特定列的值:

    $this->session->userdata['all_data']['column_name'];
    

    //如果你想在会话中添加一些特定的列:

    $this->session->set_userdata('all_data',$data['column_name']);
    

    最重要的一点:不要忘记加载会话库,否则将无法正常工作

    【讨论】:

      【解决方案3】:

      试试这个

      设置模型函数

           public function getdata_user($email)
      {
          $this->db->select('*');
          $this->db->from('users');
          $this->db->where('email', $email) ;
          $query = $this->db->get();
          return $query->result();
      }
      

      在控制器功能中

          public function login_validation() {
      
          // get form input
          $email = $this->input->post("email");
          $password = $this->input->post("password");
      
          // form validation
      
          $this->load->library('form_validation');
          $this->form_validation->set_rules("email", "Email-ID", "trim|required");
          $this->form_validation->set_rules("password", "Password", "trim|required");
      
          if ($this->form_validation->run() == FALSE)
          {
              // validation fail
              $this->load->view('admin/login');
          }
          else
          {
              // check for user credentials
              $this->load->model('site_model');
              $uresult = $this->site_model->get_user($email, $password);
              $results=$this->site_model->getdata_user($email);
      
                  if ($results) {
          $sess_array = array();
          foreach ($results as $row) {
              $sess_array = array(
                  'email' => $row->email,
                  'fname' => $row->fname,
                  'lname' => $row->lname,
                  'pre' => $row->pre,
                  'id' => $row->id,
                  );
              $this->session->set_userdata('$sess_array);
          }
          return TRUE;
      
      
                  redirect("admin/index");
              }
              else
              {
                  $this->session->set_flashdata('msg', '<div class="alert alert-danger text-center">Wrong Email-ID or Password!</div>');
                  $this->load->view('admin/login');
              }
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多