【问题标题】:CodeIgniter global functionCodeIgniter 全局函数
【发布时间】:2012-02-11 01:45:54
【问题描述】:

我在哪里可以放置我的“全局”函数,它会检查用户是否登录?

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

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

【问题讨论】:

    标签: php function codeigniter


    【解决方案1】:

    您可能应该将其放入库中,并自动加载库。当您需要在视图中使用“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!' ?>
    

    【讨论】:

    • Auth$this-&gt;Auth-&gt;logged_in() 中应该小写吗?
    • 什么是
    • @SvenB 对于大多数“旧”框架(CI、Kohana 2.x 等),Web 根目录包含所有应用程序文件(控制器等),因此从技术上讲,只需转到/application/libraries/Auth.php 并让它只加载那个文件。 BASEPATH 常量在index.php 文件中定义,因此除非您的请求通过该文件(例如,正常的站点请求),否则该行会阻止您访问该文件。另见:en.wikipedia.org/wiki/Defence_in_depth
    【解决方案2】:

    您是否在使用身份验证库?如果没有,我会建议一个。 它们具有类似的功能。

    Tank Auth 例如有:is_logged_in(),这正是你想要的!

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

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

    如果您不需要身份验证库,可以按照 Joe 的建议进行操作

    【讨论】:

    • 我正要建议 Tank Auth,大多数人都在尝试用框架重新发明轮子,而周围已经有很棒的库了。
    • 我建议一个身份验证库,只是一个非常精简的库,让他了解它的工作原理以及如何控制应用程序流程:P
    • 是的,我知道,我正在写我的答案,因为你的答案出现了,所以我编辑了它。 :)
    • 我看到的是 Tank Auth 有点过时了,因为 Code Igniter 中有一个很棒的表单验证功能:is_unique[table.field] 但是 Tank Auth 还没有使用它,但它真的很棒图书馆,CI 是我正在学习的第一个框架,我不知道有像这样的伟大图书馆。好吧,我会使用 Joe 的建议,然后我会从 Tank Auth 库中复制一些好东西 :)。谢谢!
    • 欢迎您!这就是为什么我们在这里提供帮助:)。 CI 也是我的第一个框架,我也遇到过类似的问题。 Tank Auth 目前正在积极更新到 v2,因此可能值得开一张票要求使用此功能github.com/ilkon/Tank-Auth/issues?state=open
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2012-06-05
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      • 2011-09-30
      相关资源
      最近更新 更多