不能在codeIgniter上使用session

时间:2017-01-02 07:53:39

标签: php codeigniter session

我在表单控制器中有一个会话,当用户保存时会创建会话 会话影响表单页面,所以我的问题是:

如果我加载页面而没有点击保存未定义的索引[会话索引]错误出现

所以我在主页上创建了会话 但问题是,如果我在没有访问主页的情况下加载表单页面,则会出现未定义的索引错误 我试图调用方法session_start(),但是我收到了这个错误 遇到PHP错误

  

严重性:通知消息:会话已经启动 -   忽略session_start()文件名:views / Form.php行号:5

3 个答案:

答案 0 :(得分:3)

我强烈建议您使用默认的CI会话库。您可以在autoload.php中自动加载会话。您的会话将自动开始,无需致电session_start()

然后将$_SESSION['save']="true"替换为$this->session->set_userdata('save', 'true');

我认为您需要检查session['save']是否为真,所以您必须事先默认声明session['save']是“false”在默认控制器中指定的routes.php,并确保已在表单页面控制器中定义session['save']索引,请检查如下:

if ($this->session->userdata('save')) {
     // do something when exist
} else {
    $this->session->set_userdata('save', 'false');
}

答案 1 :(得分:1)

我不确定您为什么要尝试在CI中实现自己的会话管理,因为CI提供的功能强大的工具之一是灵活,简单但功能强大的会话管理系统。

即便如此,对您的难题来说,一个简单的解决方案当然是简单地检查表单中是否设置了会话变量,如果没有设置,则将其设置为0.在控制器中,您可以处理它,即检查值是否为0,如果是,则启动会话并分配会话变量,或者将用户退出,或者在找不到会话时执行您需要应用程序执行的操作,或者设置为0表示会话尚未激活。

答案 2 :(得分:1)

您的会话将自动启动,无需在每个控制器中调用session_start()。 codeigniter会话库负责处理它。

首先,您必须加载会话库。应用/配置/ autoload.php

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

如果您已经加载已经无需再次加载。

在会话中设置数据

$this->session->set_userdata("KEY","VALUE");

从会话中获取数据

$this->session->userdata("KEY");