我可以在哪裏放置我的「全局」函數,它將檢查用戶是否登錄?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