【问题标题】:Codeigniter session variable not workingCodeigniter 会话变量不起作用
【发布时间】:2013-04-12 09:29:51
【问题描述】:

我正在使用 codeigniter 框架,但我遇到了一些会话问题。

在我的登录表单中,我要求输入用户名和密码,然后如果提供的凭据有效,那么 我把它们放在一个会话变量中。

$user_session_data = array(
'username' => $this->input->post('username'),
'is_logged_in' => 1
);
$this->session->set_userdata($user_session_data);

之前一切正常。但是今天我在某些页面中添加了代码以将一些错误消息设置为会话。

$error_array[]="There Is An Error When Inserting Data In To The Database";
$this->session->set_userdata(array('upload_errors' => $error_array));

完成后。我可以登录到管理区域。但我不能做任何事情,它总是要求我再次登录。我认为第二个代码覆盖了记录会话数据。

有什么办法解决这个错误吗?

【问题讨论】:

    标签: php codeigniter session


    【解决方案1】:

    请使用此代码在 codeigniter 中设置会话

    $this->session->set_userdata('user_session', $user_session_data);
    

    【讨论】:

      【解决方案2】:

      您调用$this->session->set_userdata() 两次,这将删除所有旧数据并设置新数据一次。

      因此,如果您将其用于错误,您可以使用以下代码

      如果你想显示错误,codeigniter 会话库有这样做的功能

      $this->session->set_flashdata('item', 'value');
      

      使用上述代码设置值并使用获取该值

      $this->session->flashdata('item');
      

      参考:http://ellislab.com/codeigniter/user-guide/libraries/sessions.html

      【讨论】:

      • 之前的错误现在消失了。但没有它说不能修改已经启动的标头信息标头。
      • 听起来像是您在控制器中回显某些内容?
      • 如果您在 header() 或 redirect() 之前使用 echo,它将显示 cannot modify header information headers already started
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 2013-11-10
      • 2015-09-30
      • 2012-08-17
      • 2014-05-16
      相关资源
      最近更新 更多