我的这两行功能:
function buildmenu($iduser){
$ghead = $this->mnu->get_head()->result();
$i = rand(0,100);
$menu = "";
foreach ($ghead as $h){
$i++;
$access = $this->mnu->get_access($h->IDMenu,$iduser)->row()->Access;
if ($access != "0"){
$menu .= "<li class='hasSubmenu glyphicons $h->MenuIcon'>";
$menu .= "<a data-toggle='collapse' href='#mnu_systemtea$i'><i></i><span> $h->MenuDesc </span></a>";
$menu .= $this->buildchild($i,$h->IDMenu,$iduser);
$jmlchild= $this->mnu->get_jml_child($h->IDMenu);
$menu .= "<span class='count'>$jmlchild</span>";
$menu .= "</li>";
}
}
return $menu;
}
function buildchild($i=NULL,$idparent,$iduser){
$tchild = $this->mnu->get_child($idparent)->result();
$int = rand(5000,6000);
if ($tchild != NULL){
$child = "<ul class='collapse' id='mnu_systemtea$i' >";
foreach ($tchild as $c){
$access = $this->mnu->get_access($c->IDMenu,$iduser)->row()->Access;
$int++;
if ($access != '0'){
if ($c->HasSubMenu == 1){
$child .= "<li class='hasSubmenu'>";
$child .= "<a data-toggle='collapse' href='#mnu_systemtea$int'><span>$c->MenuDesc </span></a>";
$child .= $this->buildchild($int,$c->IDMenu,$iduser);
$jmlchild = $this->mnu->get_jml_child($c->IDMenu);
$child .= "<span class='count'>$jmlchild</span>";
$child .= "</li>";
}
if ($c->HasSubMenu == 0){
$cek_this_parent = $this->mnu->get_menu($idparent)->row()->IDParent;
if ($cek_this_parent == 0){
$child .= "<li>";
$child .= "<ul>";
$child .= "<li>";
$child .= "<a url-mod='$c->URLMod' url-det='$c->URLDet' ><span> $c->MenuDesc </span></a>";
$child .= "</li>";
$child .= "</ul>";
$child .= "</li>";
}
else{
$child .= "<li>";
$child .= "<a url-mod='$c->URLMod' url-det='$c->URLDet' ><span> $c->MenuDesc </span></a>";
$child .= "</li>";
}
}
}
}
$child .= "</ul>";
return $child;
}
}
我调用函数buildmenu()
并将其插入到会话变量中:
function sess_menu(){
$menu = $this->buildmenu("0579120613");
$this->session->set_userdata('sess_menu',$menu);
}
function index(){
echo $this->session->userdata('sess_menu'); // i echo menu here
}
第一次调用buildmenu()
函数时显示由index()
函数构建的菜单,但是第二次,依此类推,sess_menu
会话为空。它就像它被摧毁了。会话有什么问题吗?控制器和模型之间的连接可以使任何会话被破坏吗?
答案 0 :(得分:0)
您使用的是数据库会话还是cookie?如果您使用cookie并且会话数据太大,您可能会丢失会话并重新生成新会话。
检查$config['sess_use_database'] = TRUE;
同时启用探查器$this->output->enable_profiler(TRUE);
,以便在会话丢失会话出现任何问题时,您的会话ID是否正在发生变化。