【发布时间】:2014-05-19 20:43:54
【问题描述】:
我正在使用 Codeigniter 创建学生测试系统,但由于某种原因,我的会话数据似乎表现得很奇怪。在我的登录页面上,用户从下拉列表中选择他们的用户名(在这个阶段我不必保证安全)这会将所选用户的用户 ID 传递给一个函数,该函数在会话中设置用户数据,然后将它们重定向到仪表板页面。现在我的问题是这个。当仪表板页面通过使用 url 帮助程序中的重定向或通过导航到 localhost/progsqs/dashboard 手动加载时,会话类会创建一个新的空白会话。
我写了一些小的测试函数,它们做同样的事情,但它们在一个带有可检索数据的会话中运行良好(这排除了 codeigniter 配置问题)但由于未知的原因仪表板总是建立一个新的空白会话并尝试使用它.我已经束手无策了,需要一双新的眼睛来审视它,看看我显然犯了哪些错误,但我终生无法发现。
<?php
class Progsqs extends CI_Controller
{
function __construct()
{
parent::__construct();
}
function index()
{
$this->login();
}
function login()
{
$this->load->model('Progsq_Model');
$data['users'] = $this->Progsq_Model->getUsers();
$this->load->view('templates/header.php');
$this->load->view('progsqs/login.php', $data);
$this->load->view('templates/footer.php');
}
function logout()
{
$this->load->helper('url');
$this->session->sess_destroy();
redirect(base_url('progsqs/login'));
}
function setUser()
{
$this->load->helper('url');
$this->load->model('Progsq_Model');
$username = $this->Progsq_Model->getUsername($_POST['userlist']);
$this->session->set_userdata('username', $username);
echo $this->session->userdata('username');
//redirect(base_url('progsqs/dashboard'));
}
function dashboard()
{
echo($this->session->userdata('username'));
print_r($this->session->all_userdata());
}
function profile()
{
$this->load->view('templates/header');
$this->load->view('progsqs/profile');
$this->load->view('templates/footer');
}
function testBuilder()
{
}
/*
Debugging code for repairing session data
*/
function inputtest()
{
$this->session->set_userdata('somedata', 'This is a test');
$this->load->helper('url');
redirect(base_url('progsqs/testoutput'));
}
function outputtest2()
{
echo($this->session->userdata('somedata'));
//print_r($this->session->all_userdata());
}
function testoutput()
{
$this->load->model('Progsq_Model', '', TRUE);
$data['users'] = $this->Progsq_Model->getUsers();
$this->load->view('templates/header.php');
$this->load->view('progsqs/outputtest.php', $data);
$this->load->view('templates/footer.php');
}
function killsession()
{
$this->session->sess_destroy();
}
}
?>
【问题讨论】:
标签: php codeigniter session