我在表单控制器中有一个会话,当用户保存时会创建会话 会话影响表单页面,所以我的问题是:
如果我加载页面而没有点击保存未定义的索引[会话索引]错误出现
所以我在主页上创建了会话
但问题是,如果我在没有访问主页的情况下加载表单页面,则会出现未定义的索引错误
我试图调用方法session_start()
,但是我收到了这个错误
遇到PHP错误
严重性:通知消息:会话已经启动 - 忽略session_start()文件名:views / Form.php行号:5
答案 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");