CodeIgniter全局函数


CodeIgniter global function

如果用户登录,我可以将"全局"函数放在哪里?

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

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

您可能应该将其放入库中,然后自动加载该库。当您需要在视图中使用"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',
    ...
}

`application/controllers/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!' ?>

您正在使用身份验证库吗?如果不是,我建议你选一个。它们具有类似的功能。

Tank Auth例如有:is_logged_in(),它可以随心所欲!

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

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

如果你不想要一个身份验证库,你可以按照Joe 的建议来做

您可以在网站的每个页面上使用MY_controller和所需的所有功能。并从中继承所有控制器