我有一个用于验证用户的控制器,如下所示:
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);
控制器的目录结构如下:
控制器: 帐户 -仪表板 -登录 其他控制器就在这里......
答案 0 :(得分:4)
根据我的理解,你应该试试这个:
根据您是否自动加载会话库,我们需要包括:
$this->load->library('session');
然后你应该可以使用:
$this->session->set_userdata('some_name', 'some_value');
$session_id = $this->session->userdata('some_name');
我希望这与您的需求相同。
答案 1 :(得分:3)
因为您使用的是原生php会话,所以您需要首先使用session_start();
将其放在index.php
内,然后将其放在__construct()