代码之家  ›  专栏  ›  技术社区  ›  Dacobah

如何在使用CodeIgniter制作的应用程序中只允许使用一个方法?

  •  0
  • Dacobah  · 技术社区  · 14 年前

    我举办了一个比赛,会员可以注册赢取奖品。 现在,是时候展示比赛结果和获胜者了。我只想允许一个控制器和一个方法,以禁用仍然注册比赛的可能性。

    我认为重定向可能是一个很好的解决方案,但如何在整个应用程序上做到这一点,而不必在每个控制器的每个方法中复制和粘贴代码?

    欢迎任何想法/建议!

    2 回复  |  直到 14 年前
        1
  •  0
  •   Mischa    14 年前

    最简单的方法是捕获路线文件中的任何url( config/routes.php )并将其分配给要显示的控制器操作:

    $route['default_controller'] = 'controller';
    $route['(:any)'] = "controller/action";
    

    这也比使用重定向更快。

        2
  •  0
  •   Prasanth    14 年前

    在控制器的构造函数中,您可以添加一个检查,以查看用户是否通过匹配来调用特定的函数 uri_string() 到您所需的方法 uri ,然后使用重定向 redirect() 。这是有效的,因为签入控制器的构造函数意味着,当检查发生时,用户甚至没有访问方法的权限。因此,他/她无法执行这些命令。

    编辑:它有效。

    public function __construct(){
        parent::__construct();
        $this->load->helper('url');
        if(uri_string() !== "controller_name/allowed_method_name"){
            redirect("/"); // some where
        }
    }
    
    推荐文章