CodeIgniter глобальная функция - PullRequest
8 голосов
/ 11 февраля 2012

Где я могу разместить свою "глобальную" функцию, которая будет проверять, вошел ли пользователь в систему?

Потому что я хочу сделать что-то вроде: пользователь может просматривать некоторые страницы только тогда, когда функция isLogged() возвращает TRUE, и мне пришлось бы использовать его в некоторых представлениях, поэтому это должна быть "глобальная" функция, к которой я могу получить доступ из любого места.

Возможно ли это?Или есть лучшее решение для этого?

Ответы [ 3 ]

10 голосов
/ 11 февраля 2012

Вы, вероятно, должны поместить его в библиотеку и автоматически загрузить библиотеку.Когда вам нужно использовать флаг "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',
    ...
}

`application / controllers / 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!' ?>
5 голосов
/ 11 февраля 2012

Вы используете библиотеку аутентификации?Если нет, я бы предложил один.Они поставляются с такими функциями.

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

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

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

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

0 голосов
/ 30 августа 2014

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

...