【发布时间】:2012-08-17 13:40:46
【问题描述】:
我正在使用 codeigniter 作为框架。
首先,我使用localhost,但是当我更改为我的IP 地址时,登录功能不再起作用。我发现重定向到另一个控制器后会话丢失了。
这是print_r($this->session->all_userdata());的结果
[session_id] => 7b00fa0f8790f48d24446f9eb4e6aab2
[ip_address] => 10.42.68.71
[user_agent] => Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1
[last_activity] => 1285962398
[user_data] =>
如您所见,它没有任何数据传递给user_data,但它是在我测试时在重定向之前设置的。
我将控制器分为两个,第一个是用户 -> 登录功能的处理程序,另一个是规划器,我从用户控制器重定向的链接的处理程序。
users.php(第一控制器):
$this->load->model('users_model');
$this->load->model('mymodel');
$this->load->database();
$email = $this->input->post('email');
$pass = $this->input->post('password');
$type = $this->input->post('type');
// Authenticate the user
$userdata = $this->users_model->auth_user($email,$pass,$type);
if($userdata)
{
$data = array('FIRSTNAME' => $userdata->FIRSTNAME,
'LASTNAME' => $userdata->LASTNAME,
'EMAIL' => $userdata->EMAIL,
'LOGIN' =>TRUE, 'TYPE' => $type);
$this->session->set_userdata($data);
redirect('planner/view_system','refresh');
}
planner.php(第二个控制器):
function __construct() {
parent::__construct();
if ( ! ($this->session->userdata('LOGIN')))
{
print_r (var_dump($this->session->userdata('FIRSTNAME')));
print_r($this->session->all_userdata());
}
$this->load->helper(array('form','html','url'));
这是我的配置
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = FALSE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = TRUE;
$config['sess_match_useragent'] = FALSE;
$config['sess_time_to_update'] = 300;
【问题讨论】:
-
所有浏览器都会出现这种情况吗?您是否尝试过从其他函数然后构造函数访问会话值?您的错误日志中是否有错误或通知?
-
我不确定这是否有帮助,但尝试将 sess_use_database 更改为 true?
-
是的,所有浏览器都会发生这种情况。我没有从其他函数访问值,我直接重定向到规划器。没有错误。
-
@HeHui 不行,因为我没有为它创建数据库,我不想把它保存在我的数据库中。
-
那我真的帮不了你。唯一一次我的会话无缘无故消失是当我在同一台服务器上运行多个站点时。我有相同的 session_cookie_name。
标签: php codeigniter session redirect