Codeigniter自定义库或其他解决方案?

时间:2013-12-09 21:14:12

标签: php codeigniter session

我正在更新我在其他几个网站上使用的持久登录过程,以便与codeigniter一起工作,并希望得到一些关于处理这种情况的最佳方法的意见,或者是否有一些我可能会忽略的事情。

我到目前为止所提出的是扩展控制器类以确定用户是否已经登录(使用codeigniters会话库),然后如果用户尚未登录,我将确定他们是否具有持久性存储在他们机器上的cookie。如果他们这样做,那么我将使用他们的临时密码进行登录用户的过程(以及重置临时密码并出于安全原因重新创建他们的持久cookie)。这一切都很好。

现在我的问题涉及正确的结构和代码可重用性。每当用户通过单击登录按钮登录时,也将需要在上述过程中使用的一些相同功能。目前,我的解决方案是创建一个自定义库,其中包含与用户身份验证/注册/持久登录/登录/注销相关的所有功能,然后从其功能将来自的各个地方调用该库。需要的。

虽然我向我扔了一个红旗,为什么我现在正在起草这个问题,在这个库中我需要调用各种模型来操纵/获取数据。我知道这是可能的......但是这样做会被认为是不好的做法吗?我可能会错过这种情况的解决方案吗?

2 个答案:

答案 0 :(得分:1)

在您自己的自定义库中调用其他库和模型非常好。但是,要调用和设置模型/库,您不能使用普通的$this(即此> load->模型(' some-model'))库。

您需要使用$CI。为此,在函数的开头设置变量(从我记得,这必须在你的函数中 - 而不是构造)。然后,您可以像控制器中一样调用模型/库。例如:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Login_auth {

    function __construct() {

    }

    function run() {

        $CI =& get_instance();  

        $CI->load->model('some-model');
        $CI->load->library('some-library');

        ....

    }
}

答案 1 :(得分:0)

通过库操作和获取数据实际上并不坏。库是一种免费的代码签名工具,它意味着即插即用,因此您可以利用其中的所有代码签名函数。