Где я могу разместить свою «глобальную» функцию, которая будет проверять, если пользователь вошел в систему?
Поскольку я хочу сделать что-то вроде: пользователь может просматривать некоторые страницы только тогда, когда функция 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 со всеми функциями, необходимыми на каждой странице вашего сайта. и наследует от него все контроллеры. прочитать эту официальную вики