2011-06-22 29 views
1

我正在研究CakePHP應用程序。我想根據他/她的IP地址的用戶重定向到管理URL和我使用這個代碼在app_controller.php在CakePHP中重定向循環

 if(env('REMOTE_ADDR')=='foo') { 

     $this->redirect(array('action'=>'index', 'admin'=>1)); 
     echo $html->link(__('Logout', true), array('controller'=> 'users', 'action'=>'admin_index')); 
     } 

我儘快得到一個重定向循環的條件匹配。 :(

回答

5

這是因爲你的應用程序控制器火災碼任何事情之前,你已經基本上編寫的代碼轉換爲

  1. 訪問URL => AppController的火災,向您發送/管理/控制/索引/
  2. 再次/管理/控制/索引/ AppController的火災,併發送你/管理/控制/索引/
  3. 如上

另一件事,你似乎是呼應之後你一個鏈接做一個重定向,這不起任何作用。

你可能需要的是這樣的事情

$url = 'Wherever you are redirecting to'; 
if (env('REMOTE_ADDR') == 'foo' && $this->params['url']['url'] != $url) { 
    $this->redirect($url); 
} 

而且,當你做$this->redirect(array('action'=>'index', 'admin'=>1));你基本上重定向到你是在哪個網址索引操作。這是你想要做什麼?如果是這樣,你需要修改您的支票類似

$url = 'Wherever you are redirecting to'; 
if (env('REMOTE_ADDR') == 'foo' && $this->params['action'] != 'index' && $this->params['admin'] != 1) { 
    $this->redirect($url); 
} 
$url = 'Wherever you are redirecting to'; 
if (env('REMOTE_ADDR') == 'foo' && $this->params['action'] != 'index' && $this->params['admin'] != 1) { 
    $this->redirect($url); 
} 
+0

您好John,感謝您的答覆,我使用了上面的代碼,但我仍然收到重定向循環錯誤。 :( –

+0

噢,對不起,它工作正常,FTP服務器沒有上傳文件。:P –