我做了一个比赛,会员可以注册赢取奖品。现在,是时候展示比赛的结果和获胜者了。我只想允许一个控制器和一种方法,以禁用仍然注册参加比赛的可能性。
我认为重定向可能是一个很好的解决方案,但是如何在整个应用程序上执行此操作而不在每个控制器的每个方法中复制和粘贴代码?
欢迎任何想法/建议!
我做了一个比赛,会员可以注册赢取奖品。现在,是时候展示比赛的结果和获胜者了。我只想允许一个控制器和一种方法,以禁用仍然注册参加比赛的可能性。
我认为重定向可能是一个很好的解决方案,但是如何在整个应用程序上执行此操作而不在每个控制器的每个方法中复制和粘贴代码?
欢迎任何想法/建议!
uri_string()
在控制器的构造函数中,您可以通过匹配您所需的方法添加检查用户是否正在调用特定函数uri
,然后使用重定向他redirect()
。这是有效的,因为检查控制器的构造函数意味着,当检查发生时,用户甚至无法访问方法。所以他/她无法执行它们。
编辑:它有效。
public function __construct(){
parent::__construct();
$this->load->helper('url');
if(uri_string() !== "controller_name/allowed_method_name"){
redirect("/"); // some where
}
}
最简单的方法是捕获路由文件 ( config/routes.php
) 中的任何 url,并将其分配给您要显示的控制器操作:
$route['default_controller'] = 'controller';
$route['(:any)'] = "controller/action";
这也比使用重定向更快。