dop83362 2012-11-11 20:57
浏览 57
已采纳

在codeigniter中重复会话

I have a model:

<?php

class Loginfunctionmodel extends CI_Model{
    function __construct()
    {
        // Call the Model constructor
        parent::__construct();

    }

    # check_if_loggedin() below checks if user has session w/ loggedIn=1, then displays needed supernav elements
    function check_if_loggedin(){
        $this->load->library('session');
        # user has loggedin Val = 1 and valid session_id
        $loggedInSetSuccess = 1;
        $sess = $this->session->userdata('session_id');
        $sessionsDbCompare = $this->db->get_where('Client',array('session_id'=>$sess,'loggedIn'=>$loggedInSetSuccess));
        // no session id for user in database... load login
        if($sessionsDbCompare->num_rows() == 1 ){
                $this->load->view('supernavigationloggedin.php');
                $this->load->view('primarynavigation.php');        
        }
        // otherwise problem with session count for the user is greater than 1.
        // Regenerate values
        elseif($sessionsDbCompare->num_rows() > 1){
            #remove current errorneous [session_id] data
                $this->session->unset_userdata();
            #reset [session_id] data
                $this->session->set_userdata();
            # load logged in views, given single session id exists.
                $this->load->view('supernavigationnotloggedin.php');
                $this->load->view('primarynavigation.php');               
        }

        // otherwise problem with session or loggedIn ... show login form.
        else{
            #remove current errorneous [session_id] data; load not logged in views.
            $this->session->unset_userdata();
            $this->load->view('supernavigationnotloggedin.php');
            $this->load->view('primarynavigation.php');     
        }

    }

}
?>

The problem is when I visit this page @ localhost/mysite it loads the following view : homepage.php and this model (above) called homepagemodel.php loads too, but a session is being created as soon as I load the page, how do I get it to be only if{} block is executed ? If I put it inside the if{} block, then a session will not be created in time using $this->load->library('session'); .

Anyone? I've been trying various fixes for this, but it keeps making duplicate rows with duplicate session values

  • 写回答

1条回答 默认 最新

  • dongye1143 2012-11-12 05:35
    关注

    Well, I am not sure if this is what you need, but here we go...

    function check_if_loggedin()
    {        
        $is_logged = $this->session->userdata('loggedIn');
        $sess = $this->session->userdata('session_id');
        $sessionsDbCompare = $this->db->get_where('Client',array('session_id'=>$sess));
    
        if ($is_logged == 1 && $sessionsDbCompare->num_rows() == 1)
        {
            $this->session->set_userdata('loggedIn', 1);
            $this->load->view('supernavigationloggedin.php');
            $this->load->view('primarynavigation.php');
        }
        else
        {
            $this->session->unset_userdata();
            $this->load->view('supernavigationnotloggedin.php');
            $this->load->view('primarynavigation.php');  
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog