所以我使用codeigniter作为我们的内部Intranet。Codeigniter会话挂起
通常在做数据库选择,更新,删除等操作时,我使用ajax,并使用jquery更新页面而不重定向。
我需要实际提交表单而不是依赖ajax。数据库操作完成后,我使用codeigniters会话设置一些会话数据,然后将用户重定向到概览页面,在此页面将从会话中检索信息并将其显示为“成功”消息。
我可以设置数据就好了:
$this->session->set_userdata('msg_title', 'Success');
$this->session->set_userdata('msg_content', 'Some success message here');
我也知道我应该使用flashdata
像这样的例子,但似乎是一个错误。
当我使用flashdata设置数据,或者当我尝试使用unset_userdata()
取消设置userdata时,浏览器挂起。
我知道它的这两个功能,因为当我删除set_flashdata()
或unset_userdata()
行时,脚本工作正常。
没有错误,错误日志中没有条目,控制台日志中没有任何条目。同一台服务器上的其他网站(子域名)工作正常。它只有当我使用这些功能时,它似乎挂起浏览器。
我使用Chrome 32.0.1700.107,我也在IE8中测试过它,它遇到了同样的问题。
我已经发布的下面的代码的相关章节:
body.php - 我的视图
<?php if($this->session->userdata('msg_reply')): ?>
<p class="big-message <?php echo $this->session->userdata('msg_colour_class'); ?>">
<strong><?php echo $this->session->userdata('msg_title'); ?></strong><br>
<?php echo $this->session->userdata('msg_message'); ?></strong>
</p>
<?php
$this->session->unset_userdata('msg_reply');
$this->session->unset_userdata('msg_colour_class');
$this->session->unset_userdata('msg_title');
$this->session->unset_userdata('msg_message');
?>
<?php endif; ?>
我的控制器
$this->session->set_userdata(array(
'msg_reply' => true,
'msg_colour_class' => 'green-gradient',
'msg_title' => 'Contacts Updated',
'msg_message' => 'You have successfully updated ' . $i . ' out of ' . $t . ' contacts.'
));
redirect('my_department/student_absence');
摘要:
- 我知道我应该使用
set_flashdata()
,不过这个功能悬挂在浏览器 set_userdata()
工作正常,并在会议unset_userdata()
创建值挂浏览器- 没有错误消息的任何地方。
- 删除
set_flashdata()
或unset_userdata()
的实例可以解决问题,但也会阻止我能够设置flashdata或删除正常的会话数据。
编辑
我自动载入会议库,它可为每个页面。 另外,试图取消设置控制器中的会话数据会挂起浏览器。
在等待页面完成加载后,我发现unset_userdata()
正在工作,但其花费时间去做任何事情。
我已经运行了3次重载脚本,每次都需要2分钟才能重新载入页面。
对不起,我忘了在帖子中提到这一点,我已经自动加载会话库,因为每个页面都依赖会话来验证用户(它是一个封闭的内部敏感信息内部网)。 –
好吧,它似乎正在工作,但需要2分钟才能删除会话数据。我已经使用Chrome开发人员工具检查了这一点,然后从提交按钮到完成加载的页面,这需要2分钟。除去'unset_userdata()'函数,这些页面只需要3秒钟。 –
即使会话库已经加载,$这没有什么可指向上面提到的,我很惊讶你没有得到一个错误。无论如何,至于时间问题,我建议首先在控制器中管理会话。你尝试过这条路线吗? – Zarathuztra