CodeIgniter глобальная функция
Где я могу разместить свою "глобальную" функцию, которая будет проверять, вошел ли пользователь в систему?
Потому что я хочу сделать что-то вроде: пользователь может просматривать некоторые страницы только тогда, когда функция isLogged()
возвращает TRUE, и мне пришлось бы использовать его в некоторых представлениях, поэтому это должна быть "глобальная" функция, к которой я могу получить доступ откуда угодно.
Это возможно? Или есть лучшее решение для этого?
3 ответа
Вы, вероятно, должны поместить его в библиотеку и автоматически загрузить библиотеку. Когда вам нужно использовать флаг "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/
Для получения дополнительной информации о том, какую библиотеку использовать, вы должны проверить этот ответ, который сравнивает все библиотеки: /questions/45656952/kak-vyibrat-biblioteku-autentifikatsii-dlya-codeigniter/45656970#45656970
Если вам не нужна библиотека аутентификации, вы можете сделать это, как предложено Джо
Вы можете использовать MY_controller со всеми функциями, необходимыми на каждой странице вашего сайта. и наследовать все контроллеры от него. прочитайте эту официальную вики