CodeIgniter全局函数

时间:2012-02-11 01:45:55

标签: php function codeigniter

我可以在哪里放置我的“全局”功能,如果用户已登录则会检查该功能?

因为我想做类似的事情:用户只有在函数isLogged()返回TRUE时才能浏览某些页面,并且我必须在某些视图中使用它,这就是为什么它应该是“全局的” “功能,我可以从任何地方访问。

这可能吗?或者有更好的解决方案吗?

3 个答案:

答案 0 :(得分:10)

您应该将其放入库中,然后自动加载库。当您需要在视图中使用“logged_in”标志时,请从控制器传递它。例如:


application/libraries/Auth.php

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

class Auth
{

    public function is_logged_in ()
    {
        // Change this to your actual "am I logged in?" logic
        return $_SESSION['logged_in'];
    }

}

application/config/autoload.php

...
$autoload['libraries'] = array(
    ...
    'auth',
    ...
}

`应用/控制器/的welcome.php

<?php ...

public function index ()
{
    $view_data = array
    (
        'logged_in' => $this->Auth->logged_in()
    );
    $this->load->view('my_view', $view_data);
}

application/views/my_view.php

<? echo $logged_in ? 'Welcome back!' : 'Go login!' ?>

答案 1 :(得分:5)

您使用的是身份验证库吗?如果没有,我会建议一个。 他们有这样的功能。

Tank Auth 例如有:is_logged_in(),它完全符合您的要求!

http://www.konyukhov.com/soft/tank_auth/

有关使用哪个库的更多信息,请查看这个比较所有库的答案: https://stackoverflow.com/a/476902/576223

如果您不想使用身份验证库,则可以按照Joe的建议进行操作

答案 2 :(得分:0)

您可以将MY_controller与您网站的每个页面上所需的所有功能一起使用。并从中继承所有控制器。 read this oficial wiki