Глобальная функция 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!' ?> 

Вы используете библиотеку аутентификации? Если нет, я бы предложил его. У них есть такие функции.

Например, Tank Auth имеет: is_logged_in() , который делает именно то, что вы хотите!

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

Для получения дополнительной информации о том, какую библиотеку использовать, вы должны проверить этот ответ, который сравнивает все библиотеки: https://stackoverflow.com/a/476902/576223

Если вам не нужна библиотека проверки подлинности, которую вы можете сделать по предложению Джо

вы можете использовать MY_controller со всеми функциями, необходимыми на каждой странице вашего сайта. и наследует от него все контроллеры. прочитать эту официальную вики