1

我有一个用于验证用户的控制器,如下所示:

function index()
{
    if($this->input->post('username'))
    {
        $username=$this->input->post('username');
        $password=$this->input->post('password');
        $this->mstudents->verifyUser($username,$password);
        if(@$_SESSION['sutdentUsername']!=""){
        echo "success";
        }
        else
        {
            echo "error";
        }
    }
    else
    {
        echo "error";
    }

}

该函数由ajax在视图中调用,如下所示:

$.post('<?PHP echo base_url();?>account/login/',{username:$("#username").val(),password:$("#password").val()},function(data){

        $("#loginButton").button('reset');
        if(data=="success")
        {
            window.location="<?PHP echo base_url();?>account/dashboard";
        }
        });

现在的问题是,当我尝试访问仪表板中的会话变量进行验证时,它会得到一个空白的 $_SESSION 数组。可能是什么问题呢?

这是我的 verifUser 模式代码:

function verifyUser($username,$password)
{
    $data=array();
    $this->db->where('email',$username);
    $this->db->where('password',$password);
    $this->db->where('status','active');
    $Q=$this->db->get('students');
    if($Q->num_rows()>0)
    {
        $row=$Q->row_array();       
        $_SESSION['sutdentUsername']=$row['email'];

    }
    else
    {
        $_SESSION['sutdentUsername']="";
    }
}

我在所有控制器的构造函数中都有这段代码:

function __construct()
{
    parent::__construct();
    session_start();
    print_r($_SESSION);

控制器的目录结构如下:

控制器:帐户-仪表板-登录其他控制器在这里...

4

2 回答 2

4

根据我的理解,你应该试试这个:

根据您是否自动加载会话库,我们需要包括:

$this->load->library('session');

然后你应该能够使用:

$this->session->set_userdata('some_name', 'some_value');

$session_id = $this->session->userdata('some_name');

我希望这与您所需要的相同。

于 2013-01-04T05:50:05.180 回答
3

因为您使用的是本机 php 会话,所以您需要首先使用session_start();将其放置在里面来启动会话,index.php或者您可以将它放在您的__construct()

于 2013-01-04T11:27:55.427 回答