我可以在哪里放置我的“全局”函数,它将检查用户是否登录?CodeIgniter全局函数
因为我想做的事情是这样的:用户只能在函数isLogged()
返回TRUE时才能浏览一些页面,我必须在某些视图中使用它,这就是为什么它应该是一个“全局”函数,我可以从任何地方访问。
这可能吗?或者有更好的解决方案呢?
我可以在哪里放置我的“全局”函数,它将检查用户是否登录?CodeIgniter全局函数
因为我想做的事情是这样的:用户只能在函数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',
...
}
`应用/控制器/的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!' ?>
您是否使用了认证库?如果没有,我会建议一个。 他们来这样的功能。
坦克验证例如有:is_logged_in()
,这正是你想要的!
http://www.konyukhov.com/soft/tank_auth/
欲了解更多信息有关的库使用,你应该看看这个答案,比较所有库:如果你不想验证库由乔的建议,你可以做 https://stackoverflow.com/a/476902/576223
我刚刚提出了** Tank Auth **,大多数人都试图用框架重新发明轮子,当已经有很棒的库周围。 – Jakub 2012-02-11 01:59:18
我建议的**是一个认证库,只是一个非常简洁的例子,让他知道它是如何工作的,以及如何控制应用程序流程:P – Joe 2012-02-11 01:59:43
我知道,我只是写我的答案作为你的答案出现了,所以我编辑了它。 :) – bottleboot 2012-02-11 02:01:57
您可以使用MY_controller以及网站每个页面上所需的全部功能。并从中继承所有的控制器。 read this oficial wiki
应在'$ this-> Auth-> logged_in()'中使用'Auth'小写? – dangel 2013-07-19 21:36:38
什么是<?php定义('BASEPATH')或exit('不允许直接脚本访问');为什么? – 2014-05-11 15:39:10
@SvenB对于大多数“较旧”的框架(CI,Kohana 2.x等)而言,web根目录包含了所有的应用程序文件(控制器等),因此技术上可以直接进入'/ application/libraries/Auth .php'并让它加载该文件。 'BASEPATH'常量在'index.php'文件中定义,所以除非你的请求正在通过该文件(例如,一个正常的站点请求),否则该行会阻止你访问该文件。另见:http://en.wikipedia.org/wiki/Defence_in_depth – Joe 2014-05-12 09:15:09