2014-02-14 55 views
0

我此行我的两个功能:为什么会话在这一行中自动杀死/破坏?

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

你使用db会话还是cookie?如果您使用cookie并且会话数据太大,则可能会丢失会话,并且会重新创建一个新会话。

检查$config['sess_use_database'] = TRUE;

也使探查$this->output->enable_profiler(TRUE);看到你的会话ID与会话的丢失会话任何问题的情况下,改变与否。