2015-01-13 3 views
0

몇 가지 지침이 필요합니다. 사용자가 메뉴에 성공적으로 로그인하면 "사용자 대시 보드"로 동적으로 변경되는 메뉴 항목 "로그인"을 변경하려고합니다. 내 auth.php 모델에서 값을 전달하려고 시도했습니다. 다른 컨트롤러에서 집으로 전화를 걸었습니다.코드 점화 기 - 사용자 로그인시 동적 메뉴

/사용자가 로그인했는지 확인하십시오. $ this-> Auth_model-> isLoggedIn();

저는 이것을 '메인'컨트롤러에 적용 해 보았습니다. 변수 $ menuName에 값을 변경하는 if/else 문을 만들었지 만, 페이지를로드 할 때 정의되지 않은 $ menuName을 말합니다. 어떻게해야합니까?

class Main extends CI_Controller { 
public $menu; 

function __construct() 
{ 
    parent::__construct(); 
    $this->load->database(); 
    $this->load->library('form_validation'); 
    $this->lang->load('auth'); 
    $this->load->Model('Auth_model'); 

    $l = $this->Auth_model->isLoggedIn(); 
    if((!isset($l))||($l==FALSE)){ 
     $menu = "logged"; 
    } 
    else{ 
     $menu = "Log-in"; 
    } 
} 

public function index() { 
    $this->load->helper(array('form')); 
    $dataTitle['title'] ="The University Digest"; 
    $this->load->view('header', $dataTitle,$menu); 
    $this->load->view('body_index'); 
    $this->load->view('footer'); 

}} 

    class Auth_model extends CI_Model { 


public function login($name, $password){ 
$password = sha1($password); 
    $this->db->where('username',$name); 
    $this->db->where('password',$password); 
    $query = $this->db->get('user_account'); 
    if($query->num_rows()==1){ 
     foreach ($query->result() as $row){ 
      $data = array(
         'username'=> $row->username, 
         'logged_in'=>TRUE 
        ); 
     } 
     $this->session->set_userdata($data); 
     return TRUE; 
    } 
    else{ 
     return FALSE; 
    }  
} 

public function isLoggedIn(){ 
     header("cache-Control: no-store, no-cache, must-revalidate"); 
     header("cache-Control: post-check=0, pre-check=0", false); 
     header("Pragma: no-cache"); 
     header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 
     $is_logged_in = $this->session->userdata('logged_in'); 

     if(!isset($is_logged_in) || $is_logged_in!==TRUE) 
     { 
      redirect('/'); 
      exit; 
     }} 

오류는 enter image description here

+1

컨트롤러에 기존 메뉴를 포착하는 코드와이 호출을 캡슐화하는 코드를 표시하십시오. 또한 과학에 대한 견해와 모델을 제공하십시오. 진지하게, 우리는 코드가 필요하다. – Ohgodwhy

+0

@Ohgodwhy가 추가되었습니다! –

답변

0

당신은 메뉴 바의를 포함하는 하나 개의보기가 있기 때문에. 사용자가 성공적으로 로그인하면 세션 변수를 설정

이있을 것이다 (그리고해야한다) 귀하의 웹 사이트/웹 응용 프로그램, 해당 세션 변수의 가용성을 확인하여 페이지의 메뉴 링크의 품질을 결정할 수 있습니다!

관련 문제