2013-08-21 42 views
0

我想知道是否有方法重定向到Tank_auth中的特定頁面(如adminpanel_view)。 我看着Auth.php控制器,但無法弄清楚如何重定向,如果它甚至有可能..有沒有辦法在Codeigniter中使用Tank_auth重定向到特定頁面?

我嘗試這樣做:

(Auth.php)

public function login() //login functie 
{ 
    $this->breadcrumbs->page = array('link'=> base_url().'auth/login' ,'title' => 'Login');   
    $data['breadcrumbs'] = $this->breadcrumbs->get(); 
    if ($this->tank_auth->is_logged_in()) {         // logged in 
     redirect('members/cpanel'); 
    } elseif ($this->tank_auth->is_logged_in(FALSE)) {      // logged in, not activated 
     redirect('/auth/send_again/'); 

    } else { 
     $data['login_by_username'] = ($this->config->item('login_by_username', 'tank_auth') AND 
       $this->config->item('use_username', 'tank_auth')); 
     $data['login_by_email'] = $this->config->item('login_by_email', 'tank_auth'); 

     $this->form_validation->set_rules('login', 'Login', 'trim|required|xss_clean'); 
     $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean'); 
     $this->form_validation->set_rules('remember', 'Remember me', 'integer'); 

     // Get login for counting attempts to login 
     if ($this->config->item('login_count_attempts', 'tank_auth') AND 
       ($login = $this->input->post('login'))) { 
      $login = $this->security->xss_clean($login); 
     } else { 
      $login = ''; 
     } 

     $data['use_recaptcha'] = $this->config->item('use_recaptcha', 'tank_auth'); 
     if ($this->tank_auth->is_max_login_attempts_exceeded($login)) { 
      if ($data['use_recaptcha']) 
       $this->form_validation->set_rules('recaptcha_response_field', 'Confirmation Code', 'trim|xss_clean|required|callback__check_recaptcha'); 
      else 
       $this->form_validation->set_rules('captcha', 'Confirmation Code', 'trim|xss_clean|required|callback__check_captcha'); 
     } 
     $data['errors'] = array(); 

     if ($this->form_validation->run()) {        // validation ok 
      if ($this->tank_auth->login(
        $this->form_validation->set_value('login'), 
        $this->form_validation->set_value('password'), 
        $this->form_validation->set_value('remember'), 
        $data['login_by_username'], 
        $data['login_by_email'])) {        // success 
       redirect(''); 

      } else { 
       $errors = $this->tank_auth->get_error_message(); 
       if (isset($errors['banned'])) {        // banned user 
        $this->_show_message($this->lang->line('auth_message_banned').' '.$errors['banned']); 

       } elseif (isset($errors['not_activated'])) {    // not activated user 
        redirect('/auth/send_again/'); 

       } else {             // fail 
        foreach ($errors as $k => $v) $data['errors'][$k] = $this->lang->line($v); 
       } 
      } 
     } 
     $data['show_captcha'] = FALSE; 
     if ($this->tank_auth->is_max_login_attempts_exceeded($login)) { 
      $data['show_captcha'] = TRUE; 
      if ($data['use_recaptcha']) { 
       $data['recaptcha_html'] = $this->_create_recaptcha(); 
      } else { 
       $data['captcha_html'] = $this->_create_captcha(); 
      } 
     } 
     $this->load->view('views/header'); 
     $this->load->view('auth/login_form', $data); 
     $this->load->view('views/footer'); 
    } 
} 

回答

1

確保您在使用函數base_url,site_urlredirect之前加載了url_helper。而且你的代碼無法運行,因爲你錯過了一個大括號。它應該是

public function login() //login functie 
{ 
    $this->load->helper('url'); 
    $this->breadcrumbs->page = array('link'=> site_url('auth/login') ,'title' => 'Login');   
    $data['breadcrumbs'] = $this->breadcrumbs->get(); 
    if ($this->tank_auth->is_logged_in()) {  // logged in 
     redirect('members/cpanel'); 
    } 
} 
+0

實際上這不是整個代碼。我沒有忘記添加一個大括號'''我已經加載了url_helper。這和我試過的完全一樣。 –

+0

那麼,當你重定向時會發生什麼? –

+0

什麼都沒有。默認情況下,它仍然會重定向到首頁。 –

相關問題