我正在开发CakePHP应用程序。我正在尝试根据用户的IP地址将用户重定向到管理员URL,为此我在app_controller.php中使用此代码
if(env('REMOTE_ADDR')=='foo') {
$this->redirect(array('action'=>'index', 'admin'=>1));
echo $html->link(__('Logout', true), array('controller'=> 'users', 'action'=>'admin_index'));
}
条件匹配后,我正在获得重定向循环。 :(
答案 0 :(得分:5)
这是因为您的app控制器会先触发代码。您编写的代码基本上转换为
另一件事,您在执行重定向后似乎回应了一个链接,这不起任何作用。
你可能想要的是这样的东西
$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);
}