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

Другие вопросы по тегам