2013-02-23 96 views
0

我在這工作了一天。我得到這個same problem,但我不明白。CodeIgniter中的重定向循環錯誤

<?php 
class Users extends CI_Controller 
{ 
    function index() 
    { 
     redirect('Users/login'); 
    } 

    function login() 
    { 
     $data['title']  = 'Selamat datang di Sistem Informasi Koperasi'; 
     $data['main_content'] = 'login'; 
     $this->load->view('Users/template', $data); 
    } 

    function logout() 
    { 
     $this->session->sess_destroy(); 
     $this->session->set_flashdata('info_login', 'Anda sudah keluar dari sistem'); 
     redirect('Users/login'); 
    } 

    function validate() 
    { 
     //Load User Model 
     $this->load->model('Users_Model'); 
     //Validate User 
     $query = $this->Users_Model->validate(); 


     if($query != '') { 
      //Mengambil Roles dari Groups 
      $roles = $this->Users_Model->roles($query->group_id); 

      //$this->login_model->last_login($query); 
      $data = array(
       'username' => $query->username, 
       'roles' => $roles, 
       'is_logged_in' => true 
      ); 
      $this->session->set_userdata($data); 

      if($roles == 'administrators') { 
       redirect('Administrators/index'); 
      } elseif($roles == 'managers') { 
       redirect('Managers/index'); 
      } 

      else { 
       $this->session->set_flashdata('info_login', 'Mohon maaf anda belum terdaftar sebagai Group! Silahkan hubungi admin!'); 
       redirect('Users/login'); 
      } 
     } else { 
      $this->session->set_flashdata('info_login', 'Maaf,username dan password yang anda masukkan salah,silahkan coba kembali!'); 
      redirect('Users/login'); 
     } 
    } 

} 

在Chrome和Firefox我得到這個消息。我該怎麼辦?

此網頁有重定向循環在 http://localhost/simpks/index.php/Users/login的網頁生成了過多 的重定向。清除您的本網站的Cookie或允許第三方Cookie可以解決此問題。如果沒有,可能是 服務器配置問題,而不是您的計算機的問題。這裏有 是一些建議:稍後重新加載此網頁。瞭解有關此 問題的更多信息。錯誤310(net :: ERR_TOO_MANY_REDIRECTS):太多的 重定向。

這是我的看法的template.php

<?php 
$this->load->view('includes/header',$main_content); 
$this->load->view('Users/'.$main_content); 
$this->load->view('includes/footer'); 
?> 

這是我的模型Users_Model.php

<?php 

    class Users_Model extends CI_Model{ 

     function validate(){  
      $this->db->where('username',$this->input->post('username')); 
      $this->db->where('password',md5($this->input->post('password'))); 
      $query = $this->db->get('Users'); 

      if($query->num_rows == 1){ 
       $row = $query->row(); 
       return $row; 
      } 
     } 

     function roles($id){ 
      $this->db->where('id',$id); 
      $query = $this->db->get('Groups'); 

      if($query->num_rows == 1){ 
       $row = $query->row(); 
       return $row->name; 
      } 
     } 

    } 

?> 
+0

的底部我看不出重定向在'login'方法。 – 2013-02-23 22:03:56

+0

您不再在您的登錄頁面中重定向? – Winston 2013-02-23 22:05:15

+0

是的,這是第一次 – user2103279 2013-02-23 23:08:13

回答

0

使用包括替代裝載機,如果你考慮調用它。 ex:include 'includes/footer';

0

您不必在您的視圖類中將redirect('Users/login');用於會話檢查。只是抹去它。

如果你需要重定向,把它放在另一個頁面,如users/test。如果在用戶/測試控制器中用戶的會話過期/測試呼叫重定向方法。爲了更好的結構,我認爲你應該儘量減少php功能。

0

我也面臨這個問題,但兩個頁面的控制器我重定向的方法,所以我在重定向方法中添加refresh,嘗試它。

閱讀CI redirect with refresh頁面

<?php 
class Users extends CI_Controller 
{ 
    function index() 
    { 
     redirect('another_controller/login'); 
    } 
} 

Create another controller - another_controller.php 

class another_controller extends CI_Controller 
{ 
    function login() 
    { 
     $this->load->view('home'); 
    } 
}